c++ - C++中跨数据类型的赋值

标签 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/

相关文章:

visual-c++ - __NULL_IMPORT_DESCRIPTOR 有什么用(MSVC map 文件)?

c++ - Boost::multi_array——引用太慢

performance - 检查 Perl 函数参数值得吗?

Python type() 函数返回一个可调用对象

arrays - 如何在不限制其维度的情况下为函数参数指定类型?

c++ - 如何将光标(鼠标指针对象)转换为 bmp 图像的自动序列?

c++ - C++中使用extern共享变量

c++ - 有什么理由使用运行时断言而不是编译时断言吗?

c++ - 可变长度数组在主函数中编译,但在类声明中不编译?

c++ - 使用 deque 实例化 priority_queue 无法编译 - 使用 vector 则可以。这是为什么?