【发布时间】:2010-06-17 11:25:33
【问题描述】:
考虑以下代码:
int main()
{
signed char a = 10;
a += a; // Line 5
a = a + a;
return 0;
}
我在第 5 行收到此警告:
d:\codes\operator cast\operator cast\test.cpp(5) : 警告 C4244: '+=' : 从 'int' 转换为 'signed char',可能会丢失数据
这是否意味着 += 运算符将右手运算符隐式转换为 int?
P.S:我使用的是 Visual Studio 2005
编辑:仅当警告级别设置为 4 时才会出现此问题
【问题讨论】:
-
嗯,我用 VS 2010 express 对其进行了测试,编译时没有任何警告,所以我认为它是一些“未定义的行为”?
-
在c/c++常规选项下的项目设置中设置警告级别为4。
-
在 VC++ 2010 Express 中使用 Level 4 仍然可以