【C】溢出问题
2016-05-28 22:31
218 查看
溢出问题
有一天,加入不小心写成了下列程序
让我们想想程序会怎么样运行
我们先猜测一下,i从0到10,应该输出11次文字
然而··
程序进行死循环了。。。
为什么呢??
再想一下,for循环的执行条件是i<10的时候,才会进行循环
死循环是不是表示着。。
i一直没能大于10!
那么,究竟是为什么呢?
接下来,让我们从内存分析一下
如果先定义数组,再定义i
就不会出现这种状况了。
在将他们定义顺序互换后
程序还是“死了”,是因为第11次输出后
接下来的a[10]语句溢出无法执行
针对本次论述的溢出问题,不同的新型编译器会有不同的解决方案
其中一种就是
在 i 和数组之间加上 一两块内存 以保证不会在不小心的情况下溢出太多
有一天,加入不小心写成了下列程序
让我们想想程序会怎么样运行
#include<stdio.h> int main() { int i=0; int a[10]; for(;i<=10;i++) { printf("这是一行文字\n"); a[i]=0; } return 0; }
我们先猜测一下,i从0到10,应该输出11次文字
然而··
程序进行死循环了。。。
为什么呢??
再想一下,for循环的执行条件是i<10的时候,才会进行循环
死循环是不是表示着。。
i一直没能大于10!
那么,究竟是为什么呢?
接下来,让我们从内存分析一下
如果先定义数组,再定义i
就不会出现这种状况了。
在将他们定义顺序互换后
程序还是“死了”,是因为第11次输出后
接下来的a[10]语句溢出无法执行
针对本次论述的溢出问题,不同的新型编译器会有不同的解决方案
其中一种就是
在 i 和数组之间加上 一两块内存 以保证不会在不小心的情况下溢出太多