为什么VC C4244警告(可能丢失数据)具体处理'int'?

时间:2012-08-08 15:23:09

标签: c++ visual-c++ compiler-warnings

以下代码示例演示了从shortchar的隐式强制转换在第3级触发,而从intchar的隐式强制转换仅在警告级别触发4。

int main()
{
    short as = 1;
    int   ai = 1;
    char  b1 = as; // warning C4244 (Level 3)
    char  b2 = ai; // warning C4244 (Level 4)
    return 0;
}

这是什么原因 - documentation省略了原因?

在更改变量类型并使用此警告识别可能的转换问题后,我遇到了此问题。我错过了警告,并认识到我必须切换到4级。

1 个答案:

答案 0 :(得分:5)

一个原因可能是涉及较小类型的算术运算实际上是使用提升为整数的值执行的,因此将int结果分配回原始大小稍微合理一些。

为char分配短片几乎总是一个错误。