C C++的整数溢出陷阱
2017-03-12 21:55
330 查看
对于程序中出现的整数常量(不是整数变量),在C、C++中是用什么数据类型的存储的呢?
答:用从下面列表中匹配到的第一个能容纳该整数常量的整数类型存储
比如说对于程序中出现50000,int就可以容纳,用int表示就好。
由此引发的问题:整数溢出问题
即:若干个整数相乘,可能每个整数都可以用int表示,但是乘积却不能用int表示,由于默认的类型还是int,可能会引发整数溢出。
例:long int x=4000*1024*1024;
该式中的每个数字都可以用int表示,故乘积也用int表示,虽然x是long int ,但是中间运算结果已经导致了整数溢出。
答:用从下面列表中匹配到的第一个能容纳该整数常量的整数类型存储
1. int 2. long int 3. long long int
比如说对于程序中出现50000,int就可以容纳,用int表示就好。
由此引发的问题:整数溢出问题
即:若干个整数相乘,可能每个整数都可以用int表示,但是乘积却不能用int表示,由于默认的类型还是int,可能会引发整数溢出。
例:long int x=4000*1024*1024;
该式中的每个数字都可以用int表示,故乘积也用int表示,虽然x是long int ,但是中间运算结果已经导致了整数溢出。
相关文章推荐
- [美]Andrew Koenig -C陷阱与缺陷 - 整数溢出
- C陷阱与缺陷-整数的溢出
- 整数溢出问题——讲的不错
- [leetcode:7] 字符串转整数的溢出判断
- 整数溢出,如何判断整数溢出
- 不考虑溢出,写一个函数把一个字符串转换成整数(atoi)。
- 用“UL”避免Keil C51大整数常量运算溢出错误
- (10.31)反转一个整数数字,输入为32位signed integer。反转后溢出则返回 0 。
- Linux Kernel kNFSd 整数溢出 拒绝服务漏洞 .
- 4.漏洞验证系列--MS15-034 HTTP协议栈整数溢出
- 警惕rapidxml的陷阱(二):在Android上默认内存池分配数组过大,容易导致栈溢出
- 如何检测整数相加溢出
- ORA-01455: 转换列溢出整数数据类型
- 溢出了整数列。
- leetcode 7. Reverse Integer(C语言,翻转一个整数,判断是否溢出)19
- Java 整数溢出
- ulua整数溢出的BUG
- 一种被忽视的构造和整数溢出重现
- 关于异或的用法1交换整数(注意陷阱)2求整数序列中差的一个值
- [LeetCode 7]Reverse Integer(处理整数溢出)