В этих выражениях используются операнды целого или символьного типов, связанные круглыми скобками и знаками арифметических, логических, побитовых операций и операций сравнения.
К арифметическим операциям относятся:
+ сложение 3 + 2 = 5
- вычитания 5 – 2 = 3
* умножение 3 * 2 = 6
/ деление нацело 5 / 3 = 1
% остаток от деления 5 % 3 = 2
5 % 2 = 1
5 % 1 = 0
5 % 5 = 0
2 % 3 = 2
++ инкремент x++ = x + 1
++x = x + 1
-- декремент x-- = x – 1
--x = x – 1
В отличие от Паскаля, в выражения целого типа языка Си могут входить и операнды символьного типа (char), при этом операции выполняются над кодами символьных констант, а результат может быть выражен или целым числом, или символом:
‘A’ + 3 = ‘D’
‘A’ + 3 = 68
‘a’ – 32 = ‘A’
‘a’ – 32 = 65
‘0’ + 1 = 49
‘0’ + 1 = ‘1’
В языке Си используются три логические операции:
!НЕ отрицание, инверсия,
||ИЛИ логическое сложение, дизъюнкция,
&&И логическое умножение, конъюнкция
и шесть операций сравнения:
==равно,
!= не равно,
> больше,
>= больше или равно,
< меньше,
<= меньше или равно.
Внимание! Операция равно в Си обозначается не одним, как в Паскале, а двумя знаками равенства: ==
Результатами логических операций и операций сравнения могут быть две константы:
1 – истина,
0 – ложь.
Причем считается, что если операнд в выражении не равен нулю (не ложь), то он имеет значение истина:
5&&3 = 1 истина И истина есть истина
5&&0 = 0 истина И ложь есть ложь
!1 = 0 НЕ истина есть ложь
!5 = 0
5==5 = 1 5 равно 5 есть истина
5==3 = 0
5!=5 = 0 5 не равно 5 есть ложь
5>3 = 1
5<=3 = 0
Побитовые операции выполняются над двоичными кодами операндов, над каждым разрядом кода отдельно. К ним относятся:
&И 5&3 = 1 101 = 5
&
___
|ИЛИ 5|3 = 7 101 = 5
|
___
^ исключающее ИЛИ 5^3 = 6 101 = 5
^
___
Приоритет выполнения операций:
! НЕ
- изменение знака
++ инкремент
-- декремент
Эти операции имеют наивысший приоритет и выполняются в выражениях справа налево.
За ними следуют операции:
*, /, % операции типа умножения
+, - операции типа сложения
>, >=, <, <= операции сравнения
==, != операции равенства
& побитовое И
^ исключающее ИЛИ
| побитовое ИЛИ
&& логическое И
|| логическое ИЛИ
Эти операции выполняются в выражениях слева направо. Порядок вычислений может быть изменен с помощью круглых скобок.
В выражениях вещественного типа используются операнды всех типов Си, связанные знаками арифметических, логических операций, операций сравнения и круглыми скобками.
К арифметическим операциям относятся:
+ сложение 3.2 + 2.5 = 5.7
- вычитания 5.8 – 2.5 = 3.3
* умножение 3.5 * 2.0 = 7.0
/ деление 5.5 / 2.0 = 2.25
Логические операции и операции сравнения совпадают с соответствующими операциями для выражений целого типа.
Внимание! Не рекомендуется использовать операцию чистого равенства == для сравнения вещественных чисел – она, как правило, дает значение ложь (0).
Побитовые операции над операндами вещественного типа не определены.
Приоритет и порядок выполнения операций в выражениях вещественного типа соответствует приоритету и порядку их выполнения в выражениях целого типа. Если в выражении вещественного типа встречаются операнды различных типов, то производится автоматическое преобразование типов к одному, самому длинному:
операнды типов char и short – к операндам типа int,
если хотя бы один из операндов имеет тип double, то и другие преобразуются в операнды типа double, и результат будет иметь тоже тип double,
если хотя бы один из операндов имеет тип long, то и другие преобразуются в операнды типа long, и результат будет иметь тоже тип long.