<分区>
Possible Duplicate:
Make VS compiler catch signed/unsigned assignments?
我在 VC++ 2005/2008 中编译了以下代码片段:
unsigned long ul = ...;
signed long l = ...;
l = ul;
并期望看到编译器警告(警告级别设置为 4),但没有生成。我在这里遗漏了什么明显的东西吗?
谢谢
标签 c++ visual-c++ types
<分区>
Possible Duplicate:
Make VS compiler catch signed/unsigned assignments?
我在 VC++ 2005/2008 中编译了以下代码片段:
unsigned long ul = ...;
signed long l = ...;
l = ul;
并期望看到编译器警告(警告级别设置为 4),但没有生成。我在这里遗漏了什么明显的东西吗?
谢谢
最佳答案
如果省略的初始值设定项是编译时常量,静态分析器可能会确定不会发生溢出,并让它在没有警告的情况下滑动。尝试将 ul 初始化为 > 2^31 -1,看看会发生什么(假设您使用的是 32 位平台)。
关于c++ - C++中跨数据类型的赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1559334/