コンパイラの警告 (レベル 4、オフ) C4388
'token': 符号付きと符号なしの数値を比較しようとしました
token 演算子を使って signed
とより大きな unsigned
の数値を比較する場合、コンパイラは signed
の値をより大きな unsigned
型に変換する必要がありました。
解説
この警告を修正する 1 つの方法は、signed
型とより大きな unsigned
型を比較するときに、2 つの型の一方をキャストする場合です。
既定では、この警告はオフに設定されています。 /Wall または /w44388
を使用して、コマンド ラインでレベル 4 警告として有効にできます。 または、ソース ファイルで #pragma warning(default:4388)
を使用します。 詳細については、「既定で無効になっているコンパイラ警告」を参照してください。
例
この例では C4388 が生成され、その修正方法が示されています。
// C4388.cpp
// compile with: cl /EHsc /W4 C4388.cpp
#pragma warning(default: 4388)
int main() {
unsigned long long uc = 0;
int c = 0;
unsigned long long c2 = c; // implicit conversion
if (uc < c) // C4388
uc = 0;
if (uc < (unsigned long long)(c)) // OK
uc = 0;
if (uc < c2) // Also OK
uc = 0;
}