Ostrzeżenie kompilatora (poziom 4) C4389
"equality-operator" : niezgodność ze znakiem/bez znaku
Dotyczy to ==
signed
operacji lub !=
i unsigned
zmiennych. Może to spowodować utratę danych.
Uwagi
Jednym ze sposobów naprawienia tego ostrzeżenia jest rzutowanie jednego z dwóch typów podczas porównywania signed
i unsigned
typów.
Przykład
Poniższy przykład generuje C4389:
// C4389.cpp
// compile with: cl /EHsc /W4 C4389.cpp
int main()
{
int a = 9;
unsigned int b = 10;
int result = 0;
if (a == b) // C4389
result = 1;
else
result = 2;
if (unsigned(a) == b) // OK
result = 3;
else
result = 4;
return result;
}
Zobacz też
Ostrzeżenie kompilatora C4018
Ostrzeżenie kompilatora (poziom 4) C4388