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 bool
wyraż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++;
}