Предупреждение компилятора (уровень 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++;
}