Операции отношения и логические операции
Больше или равно | >= |
Больше | > |
Меньше или равно | <= |
Меньше | < |
Равно | == |
Неравно | != |
Логическое «и» | && |
Логическое «или» | || |
Отрицание «не» | ! |
Логическое значение «ложь» представляется целым нулевым значением, а значение «истина» представляется любым ненулевым значением
Выражения, связанные логическими операциями && и ||, вычисляются слева направо, причем вычисление значения выражения прекращается сразу же, как только становится ясно, будет ли результат истинен или ложен.
Старшинство операции && выше, чем у операции ||.
Программа 86
#include<stdio.h>
main()
(
int x, у, z;
x=l; y=l; z=0; x=x&&y||z; printf("%d\n",x);
x=x|| !y&&z; printf("%d\n",x) ;
x=y=l; z=x++-l; printf("%d\n",x);printf("%d\n",z) ;
z+=-x++ + ++y; printf("%d\n",x) ; printf("%d\n",z);
z=x/++x; printf("%d\n",x); printf("%d\n",z) ;
}
Результат выполнения программы: 1 1 2 0 3 0 4 1
Битовые операции
Битовое «и» Битовое «или» Битовое исключающее «или» Сдвиг влево Сдвиг вправо Инверсия битов (унарная операция) | & | ~ « » \ ~ |
Программа 87
#include<stdio.h>
main()
(
int у, х, z, k;
x=03; y=02; z=01; k=x|y&z; printf("%d\n",k) ;
k=x|y&~z; printf("%d\n",k) ;
k=x^y&~z; printf("%d\n",k) ;
k=x&y&&z; printf("%d\n",k) ;
x=l; y=-l;
k=!x|x; printf("%d\n",k) ;
k=-x|x; printf("%d\n",k) ;
k=x^x; printf("%d\n",k) ;
x<<=3; printf("%d\n",x);
y<<=3; printf("%d\n",y);
y>>=3; printf("%d\n",y);
}
После выполнения программы получаем следующие результаты:
3 3 1 1 1 -1 0 8 -8 8 1 9 1
Выражения. Конструкции, включающие константы (литералы), переменные, знаки операции, скобки для управления порядком выполнения операций, обращения к функциям, называют выражениями.
Если в выражениях встречаются операнды различных типов,то они преобразуются к общему типу в соответствии с определенными правилами:
• переменные типа char интерпретируются как целые без знака (unsigned);
• переменные типа short автоматически преобразуются в int; если одиниз операндов имеет тип unsigned, то другой (другие) также преобразуется к типу unsigned и результат имеет тип unsigned;
• если один из операндов имеет тип int, то другой (другие) также преобразуется ктипу int и результат имеет тип int;
• если один из операндов имеет тип char, то другой (другие) также преобразуется к типу char и результат имеет тип char;
• во время операции присваивания значение правой части преобразуется к типу левой части, который и становится типом результата;
• в процессе преобразования int в char лишние старшие 8 бит просто отбрасываются. Кроме того, существует возможность точно указывать требуемый тип данных, к которому необходимо привести некоторую величину (в скобках перед этой величиной). Скобки и имя типа вместе образуют операцию, называемую приведением типов.
Например: z=(int)x+(int)y;
Дата добавления: 2020-02-05; просмотров: 495;