在看書時,似乎看到這個陷阱,但直到自己遇到,確實感覺可怕。
我先貼出錯誤**:
/* count.c ----簡單的計數程式*/
#include< stdio.h>
#define size 10000
int main(void)
執行結果:就是下面的框框一直出現,沒有預料的隔一會出現 「done」.
然後我分析,這個可能哪出錯了,通過列印 " 變數 i 和 j 的值變化,我似乎發現了點甚麼」
/* count.c ----簡單的計數程式*/
#include< stdio.h>
#define size 10000
int main(void)
/*計數完,進行提示*/
printf("done");
return 0;
}
執行結果是:下圖,結果發現「i」的值竟然變成這樣。
所以問題找到了,是第二層迴圈變成了死迴圈,看似有條件限制的,結果變成了這樣的死迴圈。
更改後的**有這樣幾個版本
/* count.c ----簡單的計數程式*/
#include< stdio.h>
#define size 10000
int main(void)
} /*計數完,進行提示*/
printf("done");
return 0;
}
/* count.c ----簡單的計數程式*/
#include< stdio.h>
#define size 100000
int main(void)
j--;
} /*計數完,進行提示*/
printf("done");
getchar();
return 0;
}
3
/* count.c ----簡單的計數程式*/
#include< stdio.h>
#define size 100000
int main(void)
} /*計數完,進行提示*/
printf("done");
getchar();
return 0;
}
這些執行結果是預想的那樣,在一小會兒 之後出現了「done」.然後視窗瞬間關閉。結果如下圖
會發現更改的**,不論從哪觀察首先在內層迴圈要避免while(i--);之類的表達,要有明確的終止條件。因為外層沒問題的,但不代表內層也同樣。
我們通常從最簡單的**如下
.............
i= 10;
while(i--)
可以多次執行語句並且正常執行,但是不能保證這樣的表達在數層迴圈內也這樣。
在寫這個博文時,在寫的時候不斷的看**,發現其實自己的錯誤**其實錯誤蠻多的。
1.在像「while」這樣的塊程式中是最好用上「{}」,圈出"while"下執行的語句。避免因為粗心,「while」下只執行一條語句。
總結:在各種平台了解到,寫部落格能提高自己,今天試了下確實如此。
c語言學習while語句
從輸入整數開始倒數到0 4 7 includeint main void putchar n 換行 return 0 字元常量 n a 這樣用單引號括起來的字元稱為字元常量。putchar函式 可以用來顯示字元。只有乙個引數,就是需要顯示的字元。改寫4 7 當輸入值為負數時不執行換行操作。inclu...
C語言學習隨筆 while迴圈語句
當需要反覆執行某些過程的時候,就可以使用while迴圈 demo 數羊 include include include int main void printf 我睡著了 n return 0 while 1 死迴圈 while 條件 帶條件迴圈 break跳出迴圈 關於死迴圈,有些場合是需要死迴圈...
C語言學習之路 簡單while迴圈
c語言學習之路 while迴圈的基本格式 while 表示式 其中表示式表示的是迴圈條件,執行 塊則為迴圈體。while語句的語義是 計算表示式的值,當其值為真 非0 時,執行迴圈體 塊。1 while語句中的表示式一般是關係表達或邏輯表示式,當表示式的值為假時不執行迴圈體,反之則迴圈體一直執行。2...