c語言學習(while)中自己遇到的陷阱

2021-07-08 10:08:34 字數 1884 閱讀 9256

在看書時,似乎看到這個陷阱,但直到自己遇到,確實感覺可怕。

我先貼出錯誤**:

/* 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...