Язык С


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


Бинарными арифметическими операциями являются +, -, *, / и операция деления по модулю %. Имеется унарная операция -, но не существует унарной операции +.

При делении целых дробная часть отбрасывается. Выражение

X % Y

дает остаток от деления X на Y и, следовательно, равно нулю, когда х делится на Y точно. Например, год является високос- ным, если он делится на 4, но не делится на 100, исключая то, что делящиеся на 400 годы тоже являются високосными. По- этому

IF(YEAR % 4 == 0 && YEAR % 100 != 0 \!\! YEAR % 400 == 0) год високосный ELSE год невисокосный

Операцию % нельзя использовать с типами FLOAT или DOUBLE. Операции + и - имеют одинаковое старшинство, которое младше одинакового уровня старшинства операций *, / и %, ко- торые в свою очередь младше унарного минуса. Арифметические операции группируются слева направо. (Сведения о старшинстве и ассоциативности всех операций собраны в таблице в конце этой главы). Порядок выполнения ассоциативных и коммутатив- ных операций типа + и - не фиксируется; компилятор может пе- регруппировывать даже заключенные в круглые скобки выраже- ния, связанные такими операциями. таким образом, а+(B+C) мо- жет быть вычислено как (A+B)+C. Это редко приводит к како- му-либо расхождению, но если необходимо обеспечить строго определенный порядок, то нужно использовать явные промежу- точные переменные. Действия, предпринимаемые при переполнении и антипере- полнении (т.е. При получении слишком маленького по абсолют- ной величине числа), зависят от используемой машины.



    Содержание раздела