C語言,while出現無限迴圈,c語言 while1 為什麼是無限迴圈?

時間 2022-03-05 17:25:25

1樓:

這個原因是這樣的:

當你輸入非法時,你的輸入將留在輸入緩衝區中。這樣下一次迴圈,因為輸入緩衝區中仍然有資料,就會再次做判斷,判斷非法繼續留在輸入緩衝區中,如此反覆。。。。

解決方法也很簡單,加一句fflush(stdin)即可。

#include

int main(void)

}return 0;}

c語言 while1 為什麼是無限迴圈?

2樓:宿舍總動員

while迴圈的用法是

while(判斷條件)

如果判斷條件為真,則實行迴圈內部**;

如果判斷條件為假,則跳出迴圈,執行後續**。

而判斷條件為真的時候,值是1;判斷條件為假的時候,值是0故而,while 1是無限迴圈

3樓:匿名使用者

在c語言的世界裡除了0是

false,其他的都是ture。

看你糾結的真蛋疼:while(1)語句,只要不是 內的語句產生的終止迴圈,while是不會跳出來的,當然中斷例外。

while(1) 語句判斷條件是死迴圈是沒錯,但也並非一定是死迴圈,也有可能執行到某個時刻就跳出while迴圈了。比如 while(1)裡面執行到了break,或者return,那麼就會終止當前的while語句,結束迴圈。上面說的中斷,只是一時跳出while語句,執行其他語句,執行完以後仍然會返回while(1)繼續迴圈。

4樓:匿名使用者

因為while()在判斷表示式為true時會迴圈執行。

在c語言中,並沒有bool型別,只有巨集true(1)和false(0)。除了0以外的任何數,在c語言中都表示true

在c++中,才有專門的bool型別true和false

5樓:匿名使用者

如果1寫在需要真假的地方,那麼一定是true。1本身自己決定不了自己是數字還是真假,看它被放在那裡了。比如說if (1) while (1) for (;1;)就會被當做真假解讀,如果是 a = a + 1;就會當做數字。

c語言中是沒有true和false的關鍵字的,真假就是用整數或指標表示的,0就是false,其他是true

6樓:匿名使用者

因為while語句括號內只要不是0就會進行迴圈,負數或正數都會進行迴圈。所以while(1)會一直迴圈,如果要跳出死迴圈可以用break語句

7樓:匿名使用者

c裡面數字:0為假,一切非0值都是「真」

while只認真和假,1是數字並且非0,那就是真咯

8樓:匿名使用者

你可以選擇使用標頭檔案stdbool.h來直接使用true表示真,false表示假,c在邏輯運算中,0表示假,非0表示真

9樓:匿名使用者

如果表示字元的話應該打上引號吧

while(1)在c語言裡是不是無限迴圈?

10樓:呂孝貿衣

在c語言的世界裡除了0是false,其他的都是ture。

看你糾結的真蛋疼:while(1)語句,只要不是內的語句產生的終止迴圈,while是不會跳出來的,當然中斷例外。

while(1)

語句判斷條件是死迴圈是沒錯,但也並非一定是死迴圈,也有可能執行到某個時刻就跳出while迴圈了。比如

while(1)裡面執行到了break,或者return,那麼就會終止當前的while語句,結束迴圈。上面說的中斷,只是一時跳出while語句,執行其他語句,執行完以後仍然會返回while(1)繼續迴圈。

11樓:南鬆蘭偉婉

如果1寫在需要真假的地方,那麼一定是true。1本身自己決定不了自己是數字還是真假,看它被放在那裡了。比如說if

(1)while

(1)for

(;1;)就會被當做真假解讀,如果是a=

a+1;就會當做數字。

c語言中是沒有true和false的關鍵字的,真假就是用整數或指標表示的,0就是false,其他是true

12樓:亓官永修甘鵑

while迴圈的用法是

while(判斷條件)

如果判斷條件為真,則實行迴圈內部**;

如果判斷條件為假,則跳出迴圈,執行後續**。

而判斷條件為真的時候,值是1;判斷條件為假的時候,值是0故而,while

1是無限迴圈

13樓:完顏楚星春

intk=0;

while(k=1)

k++;

(k=1)是用來判斷的條件它的返回值只有真和假,而k=1賦值語句的所回值為真,所以while迴圈條件一直為真,是個死迴圈,次數無限!

c語言,for和while搭配導致無限迴圈?

14樓:

由於在while裡面,n被減到1才跳出,所以在for裡面,n<3永遠成立

15樓:匿名使用者

原因樓上已經說了。

改正方法我覺得可以把while迴圈的計數用別的變數來計。

例:#include

int main ()

sum=sum+k;

}printf("%d",sum);

return 0;}

c語言無限迴圈 死迴圈區別…

16樓:匿名使用者

無限迴圈不就是死迴圈麼

k=1不是k==1,它是一個賦值語句而不是比較語句,返回的值為1,所以會一直執行下去。

17樓:千鋒教育

無限迴圈與死迴圈沒有本質的區別,只是不一樣的說法而已。

常見的無限迴圈有一下幾種實現方式:

1、for(; ;) {}

2、while(1) {}

18樓:匿名使用者

無限迴圈可能是程式需要故意為之,如while(1);

死迴圈可能是程式設計的邏輯錯誤,使得程式未按照預想的那樣執行。

19樓:匿名使用者

這是因為while括號裡面的條件是k=1 而不是k==1,k=1是個賦值語句,永遠返回真。

20樓:匿名使用者

無限迴圈就是死迴圈,while(條件控制),因為k=1恆為真,所以是無限迴圈

在c語言中。while(printf(「*」))。。這個迴圈控制表示式什麼意思?是無限迴圈嗎??

21樓:匿名使用者

printf()函式是最常用的格式化輸出函式,其原型為:

int printf( char * format, ... );

返回值:成功則返回寫入的字元數目。

因此,printf("*")返回的是列印的字元數目1,while(printf("*")....執行的是無限迴圈。

22樓:唧唧歪歪

printf沒有返回值,應該不是無限迴圈

c語言,為什麼while 迴圈只執行一次

23樓:天雨下凡

這個顯然不是執行一次,是無數次,while迴圈是一個無限迴圈,不會結束。

while(k=1),注意k=1的意思是把1賦值給變數k,所以k的值變成1,且表示式k=1的值也變成1,即真,迴圈會一直執行下去。

如果寫成while(k==1),則一次都不會執行。

c語言中dowhile或者while迴圈裡能不能巢狀for迴圈

路林嘉金鑫 迴圈當然可以巢狀迴圈.就像if可以巢狀一樣.我覺得可以將最外層的do.while語句改為while 1 守望中的守護 可以。不管是do while還是while都可以巢狀for迴圈,而且可以巢狀任意多個for迴圈。不僅如此,這三種迴圈語句可以任意相互巢狀,個數不限。但是過多的迴圈巢狀 會...

c 中怎樣計算迴圈的次數,C 中while迴圈語句怎麼限制次數

這個好辦 你可以加一條語句就可以了 比如你定義 num 0 即初始代num 0 然後再在迴圈體中加一條num 就可以了 最後輸出num的值 num的值就是迴圈的次數 例如 include void main printf 迴圈次數為 d n num 付費內容限時免費檢視 回答這個好辦 你可以加一條語...

c語言do迴圈,C語言do迴圈

inf 殷志民 沒有do迴圈,只有do while迴圈 while迴圈和for迴圈,因此如果你是用do while迴圈,do和while兩者是密不可分的,do裡面描述了你在不斷的重複做什麼事,而while告訴編譯器下一次重複進入迴圈的條件是什麼,如果沒有while的話,整個迴圈的思想就少了一部分,也...