我正坐在一堂課上,一位非常有經驗的老師告訴我,當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) –