我正坐在一堂课上,一位非常有经验的老师告诉我,当STACK memory
被程序完全填满时,下列代码将终止。现在我无法理解为什么?下面是源代码: -这个循环会无限运行吗?
#include<stdio.h>
int main()
{
char i;
for (i = 120; i < 130; i++)
printf("\n%d", i);
return 0;
}
现在,我觉得这个循环将不会终止是因为一旦程序运行时,该变量是在一个存储单元中声明的原因,这是不会改变,直到的生活程序,我们只是改变已经声明的变量的值。所以,我想问这个问题的答案。此外,如果你认为老师是对的,请解释一下:)
此外,我试着运行程序很长一段时间,但内存消耗并没有增加,甚至有点:
你现在在欺骗你的老师:) – haccks
是的,因为你使用的是'char',当'i'达到127时,下一个循环中'i ++'的结果将是-128,等等,所以循环将永远。 – Algo
@haccks - 我不认为作弊,但与我的问题是,我通常不相信老师,除非我看到代码在我眼前工作。 :| (在不可数的情况下证明是有益的:P) –