Upozornění kompilátoru (úroveň 4) C4800
Visual Studio 2019 a novější:
Implicitní převod z 'type' na log. Možná ztráta informací
C4800 je upozornění úrovně 3 v sadě Visual Studio 2015 a starší:
'type' : vynucení hodnoty na logickou hodnotu true nebo false (upozornění na výkon)
Toto upozornění se vygeneruje, pokud je hodnota implicitně převedena na typ bool
. Obvykle je tato zpráva způsobena přiřazením int
proměnných proměnným proměnným bool
, kde int
tato proměnná obsahuje pouze hodnoty true
a false
a může být znovu zadána jako typ bool
. Pokud nemůžete výraz přepsat tak, aby používal typ bool
, můžete do výrazu přidat "!=0
", což dává typ bool
výrazu . Přetypování výrazu na typ bool
nezakazuje upozornění, což je záměrně.
Toto upozornění se v sadě Visual Studio 2017 nevygeneruje.
Toto upozornění je ve výchozím nastavení vypnuté v sadě Visual Studio 2019. Pomocí /wn4800 povolte C4800 jako upozornění úrovně n nebo /Wall povolte všechna upozornění, která jsou ve výchozím nastavení vypnutá. Další informace naleznete v tématu Upozornění kompilátoru, která jsou ve výchozím nastavení vypnutá.
Příklad
Následující ukázka vygeneruje C4800 a ukazuje, jak ji opravit:
// C4800.cpp
// compile with: /W4 /w44800
int main() {
int i = 0;
// To fix, instead try:
// bool i = 0;
bool j = i; // C4800
j++;
}