以下代码示例演示了从short
到char
的隐式强制转换在第3级触发,而从int
到char
的隐式强制转换仅在警告级别触发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级。
答案 0 :(得分:5)
一个原因可能是涉及较小类型的算术运算实际上是使用提升为整数的值执行的,因此将int结果分配回原始大小稍微合理一些。
为char分配短片几乎总是一个错误。