Операции отрицания и дополнения
Операция арифметического отрицания (-) вырабатывает отрицание своего операнда. Операнд
должен быть целой или плавающей величиной. При выполнении осуществляются обычные
арифметические преобразования.
Пример:
double u = 5;
u = -u; /* переменной u присваивается ее отрицание,
т.е. u принимает значение -5 */
Операция логического отрицания "НЕ" (!) вырабатывает значение 0, если операнд есть
истина (не нуль), и значение 1, если операнд равен нулю (0). Результат имеет тип int.
Операнд должен быть целого или плавающего типа или типа указатель.
Пример:
int t, z=0;
t=!z;
Переменная t получит значение равное 1, так как переменная z имела значение равное 0
(ложно).
Операция двоичного дополнения (~) вырабатывает двоичное дополнение своего операнда.
Операнд должен быть целого типа. Осуществляется обычное арифметическое преобразование,
результат имеет тип операнда после преобразования.
Пример:
char b = '9';
unsigned char f;
b = ~f;
Шестнадцатеричное значение символа '9' равно 39. В результате операции ~f будет получено
шестнадцатеричное значение С6, что соответствует символу 'ц'.