Поделиться через


Предупреждение компилятора (уровень 4) C4800

Visual Studio 2019 и более поздних версий:

Неявное преобразование из типа в bool. Возможная потеря информации

C4800 — это предупреждение уровня 3 в Visual Studio 2015 и более ранних версиях:

"type": принудительное значение bool "true" или "false" (предупреждение о производительности)

Это предупреждение создается при неявном преобразовании значения в тип bool. Как правило, это сообщение вызвано назначением переменных переменнымbool, в которых int переменная содержит только значения true и falseможет быть переобъявлена как типbool.int Если вы не можете переписать выражение для использования типа bool, можно добавить "!=0" в выражение, которое дает тип boolвыражения. Приведение выражения к типу bool не отключает предупреждение, которое выполняется по проектированию.

Это предупреждение не создается в Visual Studio 2017.

Это предупреждение отключено по умолчанию, начиная с Visual Studio 2019. Используйте /wn4800, чтобы включить C4800 в качестве предупреждения уровня n или /Wall, чтобы включить все предупреждения, отключенные по умолчанию. Дополнительные сведения см. в разделе "Предупреждения компилятора", отключенные по умолчанию.

Пример

В следующем примере создается C4800 и показано, как исправить его:

// C4800.cpp
// compile with: /W4 /w44800
int main() {
   int i = 0;

   // To fix, instead try:
   // bool i = 0;

   bool j = i;   // C4800
   j++;
}