程序员必知的高级语言c的整数溢出以及字符
1、第1步:鼠标双击或者右击打开桌面上DEVc++软件,让其运行起来。Dev-C++是一个电脑掳姗浚瑙Windows窗口运行环境下的一款非常适合于刚开始学习c++学者使用的入门级C/C++ 集成开发环境(IDE)。这款软件很自由,遵守GPL许可协议分发源代码。它大大集成了MinGW中的GCC编译器、GDB调试器和 AStyle格式整理器等众多自由软件。非常的试用,而且界面分类清楚,具有很强大的功能。
2、第2步:点开文件,选择新建源代码,这时候新建的代码文本还是没有命名的,是一个空命名的文件,下面我们可以通过界面左上角的文件选项,选择另存为,可以存在电脑里任何一个盘,小编为了下次可以更好的找到文件,我存在电脑的桌面上。当然你们可以选择任何一个盘,根据各人所需。
3、所谓的溢出整数太大,超出了整数类型的数值范围。使用printf() 时与unsigned int类型对应的格式说明符是%u。当我们遇见需要判断给出数据是否溢出的时候,我们可以采取用一个范围更大的数来接受需要判断的数据,然后直接和需要判断的边界值比较大小即可。
4、小编以具体的例子说明原程序#include <stdio.h>void main() { int a, b; unsigned c, d; a = 2147483647; b = a+1; c = 4294967295; d = c+1; printf("a=%d,b=%d\n", a, b); printf("c=%u,d=%u", c, d);}
5、运行结果a=2147483647,b=-2147483648c=4294967295,d=0这个数据是有问题的
6、溢出结果分析0 1 1 1 1 1 1 1...1 1 1 1 1 1 1 a(2147483647)1 0 0 0 0 0 0 0...0 0 0 0 0 0 0 a+1(2147483648)1 0 0 0 0 0 0 0...0 0 0 0 0 0 0b(-2147483648)
7、结论a+1 的结果(2147483648) 超出了基本整型变量 b 所能容纳(表示)的数值范围(-2147483648~2147483647)。小编给大家留一个思考题:那么d是怎么产生的呢,请分析d的结果。