编译器警告(级别 4,关闭)C4388

“token”:有符号/无符号不匹配

使用 token 运算符比较 signed 和更大的 unsigned 数字需要编译器将 signed 值转换为更大的 unsigned 类型

备注

解决此警告的一种方法是在比较 signed 和更大的 unsigned 类型时强制转换这两种类型中的一种。

默认情况下,此警告处于关闭状态。 可以使用 /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;
}

另请参阅

编译器警告(等级 3)C4018
编译器警告(等级 4)C4389