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的話,整個迴圈的思想就少了一部分,也...