7 сентября 2021
На этом занятии уточним и закрепим основы языка Си, которые мы обсуждали в прошлый раз.
Операторы в Си
Арифметические операторы
В порядке уменьшения приоритета:
- Операторы инкремента и декремента
++и-- - Унарный минус
- - Умножение, деление, остаток от деления:
*,\,% - Сложение и вычитание
+,-
Операторы сравнения
В порядке уменьшения приоритета:
- Операторы отношения:
>,<,>=,<= - Операторы равенства:
==,!=
Арифметические операторы имеют более высокий приоритет, чем операторы сравнения.
Логические операторы
В порядке уменьшения приоритета:
- Логическое не
! - Логическое и
&& - Логическое или
||
Резюме
Суммируем операторовы в порядке уменьшения приоритета:
- Постфиксные
++и-- - Префиксные
++и--,! *,\,%+,-&&||
Это не все операторы языка Си. Например, есть операторы вызова функции () и индексации [], которые имеют самый высокий приоритет (такой же как постфиксные ++ и --). Побитовые операторы обсудим позже.
Рассмотрим примеры, показывающие различие между постфиксным и префиксным операторов инкремента (для оператора декремента все аналогично). Постфиксный инкремент возвращает старое значение переменной и только после этого увеличивает значение переменной на единицу:
int a = 0;
int b = a++;
printf("%d %d", a, b);
В результате получим
1 0
Пример выше является более короткой версией следующего кода:
int a = 0;
int b = a;
a = a + 1;
printf("%d %d", a, b);
Префиксный инкремен увеличивает значение переменной и возвращает уже новое значение:
int a = 0;
int c = ++a;
printf("%d %d", a, c);
Получим
1 1
Пример выше является более короткой версией следующего кода:
int a = 0;
a = a + 1;
int b = a;
printf("%d %d", a, b);
Форматированный ввод и вывод
Краткий справочник
Набор специальных символов (escape-последовательностей):

Набор символов преобразования для функции printf:

Тонкая настройка вывода
Пример 1. Вывод целого числа с минимальной шириной 6. Целые числа будут выровнены по правому краю. Числа, которые занимают больше, чем шесть символов, будут выведены полностью:
printf("%6d", num);
Пример 2. Вывод числа с плавающей точкой минимальной шириной 10 и с тремя знаками после запятой:
printf("%10.3f", var);
Пример 3. Вывод строки с минимальной шириной 10:
printf("%10s", line);
Пример 4. Вывод строки line с максимальной длиной, заданной параметром max:
printf("%.*s", max, line);
Упражнение 1. Написать программу для перевода радиан в градусы, вывести красиво отформатированную таблицу перевода для нескольких значений. Используйте константу M_PI из библиотеки <math.h>
Упражнение 2. Написать программу для поиска расстояния между двумя точками на плоскости. Координаты точек вводить с клавиатуры.
Важно. При использовании функций библиотеки <math.h> (например, pow и sqrt) следует добавлять параметр компиляции -lm:
gcc -lm main.cc
В случае использования редактора Geany следует добавить этот параметр через меню Build -> Установить команды сборки.
Условный оператор
Пример 1. Оператор if
if (a == 1) {
// do something
}
Пример 2. Комбинация if - else
if (a == 1) {
// do something
} else {
// do something else
}
Пример 3. Комбинация else if
if (a == 1) {
// do something
} else if (a == 2) {
// do something else
} else {
// do something really interesting
}