Операция двоичного дополнения (~) или побитового отрицания вырабатывает двоичное дополнение своего операнда (отрицание каждого бита операнда). Операнд должен быть целого типа. Осуществляется обычное арифметическое преобразование, результат имеет тип операнда после преобразования.
Форма записи:
~ Выражение;
Пример:
char b = '9'; unsigned char f;b = ~f;Шестнадцатеричное значение символа '9' равно 39. В результате операции ~f будет получено шестнадцатеричное значение С6, что соответствует символу 'ц'.
В шестнадцатеричном представлении:
39 0011 1001 Если выполнить побитовое отрицание, то получится
С6 1100 0110.
Отличие логических операций от логических побитовых операций
Логические операторы И /&&/, ИЛИ /||/ необходимо отличать от описанных выше побитовых операторов /&,I/. Логические операторы работают с логическими значениями /true и false/, позволяя составлять выражения отношения.
Чем они отличаются от соответствующих побитовых операторов?
· Логические операторы дают результат или равный 1 /истина/ или 0 /ложь/, тогда как побитовые операторы производят соответствующие действия над каждым битом;
· Логические операторы && и || являются «короткозамкнутыми». Предположим, имеется выражение: expI&& exp2. Если exp1 ложно, тогда ехр2 вычисляться не будет. Точно также имея выражение ехр1 || exp2, мы не вычислим exp2, если exp1 истинно.
Операция последовательного вычисления
Операция последовательного вычисления(«запятая») может использоваться для помещения сложного выражения в круглые скобки. Выражения будут вычисляться слева направо, все выражение примет значение последнего вычисленного Тип и значение результата являются типом и значением правого операнда.
Форма записи:
выражение, выражение
Например, если имеются две переменные Т и Х, обе типа int, тогда выражение
P=(Т=3,Х=Т+2)
производит следующие действия: переменной Т присваивается значение 3, затем к 3 прибавляется 2, и полученное значение присваивается переменной Х, затем все выражение P принимает значение переменной Х.