Арифметические операции. Примеры. Операции отношения
Бинарные арифметические операции:
+ (сложение), -(вычитание), * (умножение), / (деление), %(взятие модуля).
% нельзя использовать к типам float, double, только к любым целым. Она дает при x%y остаток от деления x на y.
Для ассоциативных и коммутативных операций вроде * и + порядок вычислений не фиксируется, и транслятор может переупорядочить даже при наличии скобок. Например, (a+b)+(c+d) может вычисляться как (a+b), затем (c+d) и затем сумма, или вначале (c+d).
Если нужен определенный порядок, то можно фиксировать промежуточные операции, определив несколько последовательных операторов присваивания.
Пример
a=c+ ( f( )+b );
Порядок вычисления неизвестен.
Но –a =f ( )+b; a=c+a; порядок определен.
Другая возможность – это использовать введенный специально для этих целей в Турбо Си унарный плюс!
Пример
Для предыдущего примера:
a = c+(+(f( )+b));
ун-й плюс
бин-й плюс
Унарный плюс обязывает компилятор выполнять вначале расположенное за ним подвыражение раньше остальных равноприоритетных операций.
Эта возможность важна при организации вычислений чувствительных к точности, когда программист пытается компенсировать накапливающиеся погрешности вычислений с разным знаком
Операции отношения
Это следующие операции:
>(больше), <=(меньше либо равно), >=(больше либо равно ), <(меньше)
У операций равенства: == (равно), !=(не равно) приоритет ниже.
Тип результата этих операций: int .
Значение : 0, если отношение ложно и
1, если отношение истинно.
Т.о. в Си нет булевских констант.
true и false
ненулевое целое нулевое целое
Пример.
sint(x)+k>x+y
Вначале вычисляются (sint(x)+k) и (x+y), а затем операция >.
Дата добавления: 2016-05-26; просмотров: 1635;