Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

6.2.9. Операции

6.2.9.1.Арифметические операции

К арифметическим операциям относятся: сложение (+), вычитание (-), деление (/), умножение (*) и оста­ток от деления (%). Остаток не опре­де­лен для ве­щественных переменных. Целочисленные сложение и вычитание выпол­няются без учета переполнения.

Операция поразрядного сдвига целого числа E влево или вправо на E2 разрядов имеет вид соответственно: E<<E2 или E>>E2.

6.2.9.2.Операции отношения

В языке определены следующие операции отношения: ра­вен­ство (==, два знака равества), неравенство (!=), меньше (<), меньше или равно (<=), больше (>), больше или равно (>=).

Все перечисленные операции вырабатывают результат типа int (в числовых выражениях) или bool (в логических выражениях). Если данное отношение между операндами истин­но, то значение этого целого - единица (true), а если отноше­ние ложно, то нуль (false).

Все операции типа «больше - меньше» имеют равный прио­ритет, причем он выше, чем приоритет операций == и !=. Приоритет операции присваивания ниже приоритета всех операций отношения. Для задания правильного порядка вы­числений используются скобки.

6.2.9.3. Логические операции

Допускаются следующие логические операции: && (И), || (Или, две верти­каль­ные черточки), ! (отрицание, восклицательный знак).

Аргументами логических операций могут быть любые числа, вклю­чая задаваемые аргументами типа char или логические переменные (bool). Ре­зультат логической операции аналогичен результату операции срав­нения. Вообще все числовые значения, отличные от ну­ля, интерпре­тируются как истина.

Логические операции имеют самый низкий приоритет.

Внимание! Вычисление выражений, содержащих логические опера­ции, производится слева напра­во и прекращается (усека­ется), как только удаст­ся определить резуль­тат, т.е. остальные проверки, не влияющие на ко­нечный результат, не производятся.

Для целочисленных переменных существуют операции поразрядного И (&), ИЛИ (^), исключающего ИЛИ (|, вертикальная черта), отрицания (~, тильда).

6.2.9.4.Операции присваивания

В одном операторе операция присваивания может встречаться несколько раз. Вычисления производятся справа налево.

Пример: а = ( b = c) * d; // в начале вычисляется b = c, далее a=b*d.

Пример использования многократного при­сваивания: a=b=c=d=e=0.

Операции a+=b, a-=b, a*=b и a/=b являются укороченной фор­мой записи, соответственно: а = а + b; а = а - b; a= а* b; а = а/b.

Префиксные и постфиксные операции «++» (два плюса) и «–» (два минуса) исполь­зуют для уве­ли­че­ния (инкремент) и уменьшения (декре­мент) на единицу значения пере­мен­ной до использования переменной в выражении, если операция указана пе­ред именем переменной; если операция указана после имени перемен­ной, то после использования пере­мен­ной соответственно.

Если тип левой части присваивания отличается от типа правой части, то тип правой части приводится к типу левой.

Пример вычисления выражения и вывода его значения (50):

int main(int argc, char **argv) { int a,b,c=3,d=4,f=3,g,h=5,z=6,i;

a=z+(b=c*d*f +(g= h +(i=3))); printf («%d\n», a ); getch(); return 0;}

Операцию sizeof (размер) можно применить к константе, типу или переменной. В результате будет получено число байтов, занимаемых операндом. Если операндом является тип, то такой операнд следует заключить в круглые скобки. Если операнд - переменная, то скобки можно опустить.

Операция «запятая» применяется для связывания меж­ду собой выражений. Список выражений, разделенный запя­тыми, трактуется как единое выражение и вычисляется слева направо.