Share via


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 falsea 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 boolvý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++;
}