Выражения языка Си(ч.2). Операции Лекция 3
Основные классы операций арифметические логические поразрядные операции сравнения
Оператор присваивания имя_переменной=выражение; lvalue это объект в левой части оператора присваивания, получающий значение, чаще всего этим объектом является переменная. Термин rvalue означает значение выражения в правой части оператора присваивания.
Преобразование типов при присваиваниях Если в операции встречаются переменные разных типов, происходит преобразование типов. В операторе присваивания действует простое правило: значение выражения в правой части преобразуется к типу объекта в левой части. int x; char ch; float f; void func(void) { ch = x; /* 1-я строка */ x = f; /* 2-я строка */ f = ch; /* 3-я строка */ f = x; /* 4-я строка */ }
Результат некоторых преобразований типов
Множественные присваивания x = y = z = 0;
Составное присваивание переменная = переменная оператор выражение; переменная оператор = выражение; x = x+10; x += 10;
Арифметические операции
Приоритет выполнения арифметических операторов Наивысший (унарный минус) * / % Наинизший + -
Операции сравнения и логические операции
Таблица истинности логических операций
Приоритет логических операций Наивысший ! > >= <
Поразрядные операции
Таблица истинности операции «исключающее ИЛИ»
Умножение и деление операторами сдвига
Операция ? Выражение1 ? Выражение2 : Выражение3; x = 10; y = x>9 ? 100 : 200; x = 10; if(x>9) y = 100; else y = 200;
Операция определения размера sizeof double f; printf("%d ", sizeof f); printf("%d", sizeof(int));
Оператор последовательного вычисления: оператор "запятая» x = (y=3, y+1);
Сводка приоритетов операций