Их можно производить с любыми целочисленными переменными и константами.
& поразрядное и (логическое умножение)
Если оба бита равны 1, то результат операции равен 1, иначе 0.
Пример: 123=0000.0000.0111.1011
321=0000.0001.0100.0001
--------------------------------
0000.0000.0100.0001
\ поразрядное или
Если хотя бы один из битов равен 1 или оба бита равны 1, то результат равен 1.
Иначе 0.
------------
^ исключающее или
Если оба бита равны 0 или оба равны по 1, то результат равен 0. Иначе 0.
------------
<< u >> служат для сдвига последовательности битов вправо или влево соответственно на число позиций, определяемых выражением справа. Недостающие значения битов дополняются нулями.
Пример:
x=9 00001001
x=9<<3 01001000
x=9>>3 00000001
Поразрядные операции порождают несколько сложных операций присваивания.
|=, &=, ^=, <<=, >>=.
Например:
a&=b будет a=a&b
Можно применить к константе, типу или переменной. В результате получится число байтов, занимаемых операндом. Если операндом является тип, то такой операнд заключается в круглые скобки. Если операнд переменная, то скобки можно опустить.
Пример:
#include <stdio.h>
void main()
{ float a; int b;
char c;
float d[500]; // массив вещественных чисел на 500 элементов
printf(“\n Размер памяти под целое %d”, sizeof(int));
printf(“\n Размер памяти под символ %d”, sizeof(c));
printf(“\n Размер памяти под вещественнoе %d”, sizeof(float));
printf(“\n Размер памяти под двойную точность %d”, sizeof(double));
printf(“\n Размер памяти под массив d %d”, sizeof(d));
}
В результате:
Размер памяти под целое 2
Размер памяти под символ 1
Размер памяти под вещественнoе 4
Размер памяти под двойную точность 8
Размер памяти под массив d 2000.
Единственная операция в языке С, имеющая три операнда.
Вначале вычисляется выражение 1. Если его значение не равно 0,то вычисляется выражение 2, и это является результатом выполнения операции. Если выражение 1 равно 0, то вычисляется выражение 3, и это будет является результатом.
Вычислить минимальный элемент из трех чисел и найти его модуль.
#include <stdio.h>
void main()
{ float x,y,z,min;
float abs _ min;
printf(“\n Введите три числа x,y,z:”);
scanf(“%f%f%f”, &x,&y,&z);
min= (x<y) & x : y;
min=(min<z) ? min:z;
abs _min=(min>0) ? min: -min;
printf(“\n Минимальный из чисел: \n\t x=%f \t y=%f \n есть число =%f и его абсолютная величина =%f \n”, x,y,z,min, abs_min);