INT_MIN与溢出
来源:互联网 发布:板报排版 预防网络诈骗 编辑:程序博客网 时间:2024/06/04 19:22
http://blog.csdn.net/booirror/article/details/41225895
隔了好久没更新了,因为我在学习PL和编译器/解释器的知识。挺好奇这方面的,因为没有学过相关的课程,所以学起来有点吃力,进展缓慢,所以导致没啥可写的。
今天看到这么一段话:
32位的int型的取值是2147483647 到 -2147483648,但是,在C/C++语言中,你不能直接使用 -2147483648 来代替最小负数,因为它不是一个数,而是一个表达式。表达式是:“对正数2147483648取负”,所以,2147483648已经溢出了。这就是为什么INT_MIN总是定义成 (-INT_MAX - 1) 的原因。
之前没注意过这点,本着实践出真知的精神,我就在电脑上运行了下,发现结果是一样样的,用gcc开启Wall也没有任何警告。那么问题来了,究竟是什么情况呢?
后来一位前MSRA的员工告诉我:
这个其实要看标准的版本吧……如果是C8(和谐)9,decimal literal的类型推断顺序是long, unsigned long,所以-21474836(和谐)48的literal会解释成unsigned long,所以取负就跪了;而如果是C++ 11,那推断顺序是long, long long就没啥问题
额,发现基础知识都遗忘了。
0 0
- INT_MIN与溢出
- INT_MIN与溢出
- INT_MIN和INT_MAX溢出问题
- INT_MIN和INT_MAX溢出问题
- INT_MIN和INT_MAX溢出问题
- INT_MIN和INT_MAX溢出问题
- INT_MIN
- INT_MIN
- c中INT_MIN与INT_MAX
- INT_MIN和INT_MAX
- 【climit】INT_MIN & INT_MAX
- INT_MIN的表示法
- INT_MAX,INT_MIN,isdigit函数
- INT_MAX和INT_MIN注意事项
- INT_MAX和INT_MIN注意事项
- 栈桢与溢出
- 进位与溢出
- 进位与溢出
- linux下执行mysql的sql文件
- MySQL多线程同步MySQL-Transfer介绍
- https交互过程
- 华为721-----内联inline,虚函数virtual
- QT对access数据库进行操作
- INT_MIN与溢出
- 随机过程学习之更新过程
- MySQL数据库中QueryCache的锁模型
- 核心动画之基本动画CABasicAnimation
- Java Filter过滤器简介
- 3.2.4页面分配策略
- hdoj 1028 Ignatius and the Princess III <递归+状态记录优化----母函数????>
- Java时间工具类(把日期时间转换成xx秒前、xx分钟前、xx小时前...)
- mysql忘记root密码的解决办法