3

下面的代码示例演示隐式转换 from shorttochar在级别 3 触发,而隐式转换 from inttochar仅在警告级别 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;
}

这是什么原因 -文档省略了原因?

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

4

1 回答 1

5

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

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

于 2012-08-08T15:28:36.387 回答