Операции сравнения

Операция Результат Ограничения Примеры выражений
Отношения
х < у (x > y) 1, если х меньше (больше) у; 0 – иначе результат типа int 3 < 2 (результат 0) 3 > 2 (результат 1)
х <= у (x >=y) 1, если х меньше или равно (больше или равно) у; 0 – иначе результат типа int 3 <= 2 (результат 0) 3 >= 2 (результат 1) 3 >= 3 (результат 1)
Сравнение на равенство
х == у 1, если х равно у; 0 – иначе результат типа int 3 == 2 (результат 0) 3 == 3 (результат 1)
х != у 1, если х не равно у; 0 – иначе результат типа int 3 != 3 (результат 0) 3 != 2 (результат 1)

Поразрядные операции (побитовые)

Операция Результат Ограничения Примеры выражений
Логические
х & у поразрядное логическое И соответствующий разряд результата 1, если оба разряда х и у равны 1; 0 – иначе х и у – целочисленные операнды типа char, short, int, long char c = '\325' (c=11010101) c & 3 (3=00000011) ->
х | у поразрядное логическое ИЛИ соответствующий разряд результата 0, если оба разряда х и у равны 0; 1 – иначе х и у – целочисленные операнды типа char, short, int, long char c = '\325' (c=11010101) c | 3 (3=00000011) ->
х ^ y поразрядное исключающее ИЛИ соответствующий разряд результата 1, если оба разряда х и у различны; 0 – если совпадают х и у – целочисленные операнды типа char, short, int, long char c = '\325' (c=11010101) c ^ 3 (3=00000011) ->
~ х дополнение до единицы бит со значением 1 обращается в 0 и наоборот х – операнд типа char, short, int, long char c = '\325' (c=11010101) ~ c -> 00101010
Сдвиг
х << у сдвиг влево на у разрядов; освобождающиеся младшие разряды заполняются нулями у положительно и меньше разрядности машины char c = '\325' (c=11010101) c << 3 -> 10101000
х >> у сдвиг вправо на у разрядов; освобождающиеся старшие разряды заполняются нулями для переменных типа unsigned или значением старшего (знакового) бита у положительно и меньше разрядности машины char c = '\325' (c=11010101) c >> 3 -> 11111010

Пример 1.

/*Программа демонстрирует работу с логическими и поразрядными операциями, операциями сравнения и определения размера*/

#include <stdio.h>

void main(){

 

int a=4, b=2, c=0, log_i, log_ili, log_ne,

bit_i, bit_ili, bit_il, bit_dop, bit_s,

sr_o, sr_op, sr_r, k1, k2, k3;

char s='\325';

 

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

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

log_i=a&&b; /*Логическое И*/

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

log_i=a&&c; /*Логическое И*/

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

log_ili=a||b; /*Логическое ИЛИ*/

printf("\ta||b=%d\n",log_ili);

log_ili=a||c; /*Логическое ИЛИ*/

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

log_ili=0||c; /*Логическое ИЛИ*/

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

log_ne=!c; /*Логическое НЕ*/

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

log_ne=!a; /*Логическое НЕ*/

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

 

/*Поразрядные (побитовые) операции*/

//вывод происходит в шестнадцатеричной системе счисления

bit_i=s&3; /*поразрядное логическое И*/

printf("\ts&3=%x\n",bit_i);

bit_ili=s|3; /*поразрядное логическое ИЛИ*/

printf("\ts|3=%x\n",bit_ili);

bit_il=s^3; /*поразрядное исключающее ИЛИ*/

printf("\ts^3=%x\n",bit_il);

bit_dop=~s; /*дополнение до единицы*/

printf("\t~s=%x\n",bit_dop);

 

bit_s=s<<3; /*поразрядный сдвиг влево*/

printf("s<<3=%x\n",bit_s);

bit_s=s>>3; /*поразрядный сдвиг вправо*/

printf("s>>3=%x\n\n",bit_s);

 

/*Опеации сравнения*/

sr_o=a<b; /*а меньше b*/

printf("\ta<b=%d\n",sr_o);

sr_o=a>b; /*а больше b*/

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

sr_op=a<=b; /*а меньше или равно b*/

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

sr_op=a>=b; /*а больше или равно b*/

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

sr_op=a>=4; /*а больше или равно b*/

printf("a>=4=%d\n",sr_op);

 

sr_r=a==b; /*a равно b*/

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

sr_r=a==4; /*а равно 4*/

printf("\ta==4=%d\n",sr_r);

sr_r=a!=4; /*а не равно 4*/

printf("\ta!=4=%d\n",sr_r);

sr_r=a!=b; /*а не равно b*/

printf("\ta!=b=%d\n\n",sr_r);

 

/*Операция определения размера памяти (в байтах)*/

k1=sizeof(int);

/*число байтов, отводимое для объектов типа int*/

printf("sizeof(int)=%d\n",k1);

k2=sizeof(float);

/*число байтов, отводимое для объектов типа float*/

printf("sizeof(float)=%d\n",k2);

k3=sizeof 2*a; /*число байтов, отводимое для хранения

результата умножения 2*а*/

printf("sizeof 2*a =%d\n",k3);

}

 

Задания

1.Наберите код программы из Примера 1. Сохраните код в файл с именем log_srav.cpp. Выполните компиляцию и запуск программы.

2.Написать программу. Записать выражение, зависящее от координат точки x1 и y1, принимающее значение 1, если точка принадлежит заштрихованной области, и 0, если не принадлежит.

3.Напишите программы для вычисления следующих выражений и выведите в результате значения переменных a, b и j на экран. Полученные результаты обосновать в комментариях.

1) int j, b = 5, a =4;

j = b---a;

 

2) int j, b = 5, a =4;

j = (b--)-a;

 

3) int j, b = 5, a =4;

j = b-(--a);

 

Домашние задания

1.Напишите программы для вычисления следующих выражений и выведите в результате значения переменных a, b и j на экран. Полученные результаты обосновать в комментариях.

1) int j, b=5, a=4;
j = --b-a--;

 

2) int j, b=5, a=4;
j = -a++-++b;

 

3) int j, b=5, a=4;
j = a-++b;

2.Индивидуальное задание. Номер варианта определяется по журналу. Написать программу. Записать выражение, зависящее от координат точки x1 и y1, принимающее значение 1, если точка принадлежит заштрихованной области, и 0, если не принадлежит.

Варианты индивидуального задания

Задание Задание
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
25 26
27 28

 









Дата добавления: 2015-02-16; просмотров: 773;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.016 сек.