次の方法で共有


コンパイラ警告 (レベル 3) C4018

'token': 符号付きと符号なしの数値を比較しようとしました

token 演算子を使って signedunsigned の数値を比較する場合、コンパイラは 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;
}

関連項目

コンパイラの警告 (レベル 4) C4388
コンパイラ警告 (レベル 4) C4389