Оператор дополнения до единицы: ~

Синтаксис

~ cast-expression

Remarks

Оператор дополнения (~), иногда называемый оператором побитового дополнения , дает побитовое дополнение своего операнда. То есть каждый бит, равный в операнде 1, в результате становится равным 0, а каждый бит, равный в операнде 0, в результате становится равным 1. Операнд оператора дополнения до единицы должен быть целочисленного типа.

Оператор ключевое слово для ~

C++ задает compl в качестве альтернативного варианта правописание для ~. В C альтернативная орфография предоставляется в виде макроса в заголовке <iso646.h> . В C++ альтернативным написанием является ключевое слово; использование <iso646.h> или эквивалентного <C++ ciso646> является устаревшим. В Microsoft C++ для включения альтернативной /permissive- орфографии требуется параметр компилятора или /Za .

Пример

// expre_One_Complement_Operator.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;

int main () {
   unsigned short y = 0xFFFF;
   cout << hex << y << endl;
   y = ~y;   // Take one's complement
   cout << hex << y << endl;
}

В этом примере новое значение, присвоенное переменной y, является дополнением до единицы значения 0xFFFF без знака, т. е. значением 0x0000.

Над целочисленными операндами выполняется восходящее приведение целого типа. Тип, до который повышен операнд, является результирующим типом. Дополнительные сведения о целочисленном повышении см. в разделе Стандартные преобразования.

См. также раздел

Выражения с унарными операторами
Встроенные операторы C++, приоритет и ассоциативность
Унарные арифметические операторы