コンパイラ警告 (レベル 3) C4018
'token': 符号付きと符号なしの数値を比較しようとしました
token 演算子を使って signed
と unsigned
の数値を比較する場合、コンパイラは signed
の値を unsigned
に変換する必要がありました。
解説
この警告を修正する 1 つの方法は、signed
型と unsigned
型を比較するときに、2 つの型の一方をキャストする場合です。
例
この例では C4018 が生成され、その修正方法が示されています:
// C4018.cpp
// compile with: cl /EHsc /W4 C4018.cpp
int main() {
unsigned int uc = 0;
int c = 0;
unsigned int c2 = c; // implicit conversion
if (uc < c) // C4018
uc = 0;
if (uc < unsigned(c)) // OK
uc = 0;
if (uc < c2) // Also OK
uc = 0;
}