Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_практикум_ч1_2007.DOC
Скачиваний:
15
Добавлен:
10.11.2019
Размер:
379.9 Кб
Скачать

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

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

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

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

В языке С имеются три логические операции:

  • && операции И (and)

  • || операции ИЛИ (or)

  • ! отрицание

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

Вычисление выражений, содержащих логические операции, производится слева направо и прекращается (усекается), как только удается определить результат. Если выражение составлено из логических утверждений (т.е. выражения, вырабатывающие значения типа int), соединенных между собой операцией И (&&), то вычисление выражения прекращается, как только хотя бы в одном логическом утверждении вырабатывается значение нуль. Если выражение составлено из логических утверждений, соединенных между собой операцией ИЛИ (||), то вычисление выражения прекращается, как только хотя бы в одном логическом утверждении вырабатывается ненулевое значение.

Пример:

/*операции отношения, логические операции */

# include<stdio.h>

main( )

{

int a,b,c;

puts("Введите значения a,b,c: ");

scanf("%d %d %d",&a,&b,&c);

if (a>b && b>=c)

puts("a>b>=c");

else

if ((a==b) || (c!=0))

puts("a=b или с неравно 0");

else

if (!c)

printf("условия не выполняются");

}

Операция вычисления размера (sizeof)

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

Пример:

printf ( "\n Размер памяти под целое %d", sizeof ( int) );

printf ( "\n Размер памяти под cимвол %d", sizeof( сhar) );

Побитовые операции

Операции “<<” и “>> над битовым представлением в выражении m<<n или m>>n позволяют сдвигать битовую шкалу в представлении m на n>0 позиции влево или вправо. Если сдвигаемая величина положительная, то при сдвиге вправо освобождающиеся позиции заполняются нулями, для отрицательных величин - единицами. При сдвиге влево освобождающиеся справа позиции заполняются нулями.

Операция “~ означает дополнение до 1. В битовом представлении разряд содержит единицу, если соответствующий разряд а содержит 0 и наоборот.

Операция “&”- поразрядное “и”. В результате операции b&a единица стоит в разряде, где оба операнда содержат 1, в противном случае разряд содержит 0.

Операция “|”- это поразрядное “или”. В результате b|a стоит 0 там, где разряды а и b равны нулю и 1 в противном случае.

Операция “^”- это поразрядное исключающее “или”. В результате b^a стоит 0 там, где а и b имеют одинаковые биты и 1 в противном случае.

Пример:

/* побитовые операции */

# include<stdio.h>

main( )

{

int a,b,c,d;

printf("Введите 4 числа: \n");

scanf("%d %d %d %d",&a,&b,&c,&d);

printf("~%d=%d\n",a,~a);

printf("%d & %d=%d\n",a,b,a&b);

printf("%d | %d=%d\n",c,d,c|d);

printf("%d^%d=%d\n",a,d,a^d);

printf("%d>>%d=%d\n",b,d,b>>d);

printf("%d<<%d=%d\n",c,a,c>>a);

}