Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 4) C4800

Program Visual Studio 2019 lub nowszy:

Niejawna konwersja z typu na wartość logiczną. Możliwa utrata informacji

C4800 to ostrzeżenie poziomu 3 w programie Visual Studio 2015 i starszych wersjach:

"type" : wymuszanie wartości logicznej "true" lub "false" (ostrzeżenie dotyczące wydajności)

To ostrzeżenie jest generowane, gdy wartość jest niejawnie konwertowana na typ bool. Zazwyczaj ten komunikat jest spowodowany przypisywaniem int zmiennych do bool zmiennych, w których zmienna int zawiera tylko wartości true i false, i może zostać ponownie zadeklarowana jako typ bool. Jeśli nie możesz ponownie napisać wyrażenia, aby użyć typu bool, możesz dodać wyrażenie "!=0" do wyrażenia, co daje typ boolwyrażenia . Rzutowanie wyrażenia na typ bool nie powoduje wyłączenia ostrzeżenia, które jest zgodnie z projektem.

To ostrzeżenie nie jest emitowane w programie Visual Studio 2017.

To ostrzeżenie jest domyślnie wyłączone, począwszy od programu Visual Studio 2019. Użyj /wn4800, aby włączyć C4800 jako ostrzeżenie poziomu n lub /Wall , aby włączyć wszystkie ostrzeżenia, które są wyłączone domyślnie. Aby uzyskać więcej informacji, zobacz Ostrzeżenia kompilatora, które są domyślnie wyłączone.

Przykład

Poniższy przykład generuje kod C4800 i pokazuje, jak go naprawić:

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

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

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