1樓:匿名使用者
在c語言中,0表示假,非0表示真。
while(!b)表示b等於0時,判斷條件為真,執行迴圈體;否則為假,不執行。
非運算子(!)為單目運算子,具有右結合性。參與運算量為真時,結果為假;參與運算量為假時,結果為真。例如:!0為真;!9為假。
雖然c編譯在給出邏輯運算值時,以「1」代表「真」,「0 」代表「假」。但反過來在判斷一個量是「真」還是為「假」時,以「0」代表「假」,以非「0」的數值作為「真」。
所以當b=0; 則 !b 為真,while(!b)執行
當b!=0; 則 !b 為假,while(!b)不執行
現在分析下你的**:
第一次進入迴圈體後,走
case 1: b=0;但這行沒有break,故繼續執行直到遇到break或執行完整個switch後退出,你的**中執行到case 2: b=-1; break;這行
此時 b = -1;,跳出switch
繼續執行
a=a+b;
b=2*a;
此後a = 1 + -1 = 0;
b = 2 *0 =0;
繼續執行到while (!b);
因為b=0;所以!b不等於0,此時條件判斷為真,
程式第二次進入迴圈體
這時 a=0;b=0
執行default : b=1;跳出switch
繼續執行
a=a+b;
b=2*a;
之後a = 0 + 1 = 1;
b = 2 * 1=2;
繼續執行到while (!b);
因為b=2;所以!b等於0,此時條件判斷為假跳出while迴圈
所以**的輸出為: a=1, b=2
希望採納!
2樓:匿名使用者
c語言值為0為假,非0為真。
!是求反操作,舉例來說就是:!0為真,!5為假。
do--while 就是迴圈語句了
while (!b)也就是當b的值為0時繼續迴圈,當值非0時結束迴圈。
希望幫到你。
3樓:demon天v武
這是do while語句 當b不等於0的時候就會跳出迴圈
c語言中while(a
4樓:神丶雨祭丨
沒有判斷的話就是a有boolean值。也就是true or faulse 。
然後就是無限迴圈下面的**。直到遇到停止語句。
5樓:匿名使用者
while(a見於初學者,想判斷b是否在a c之間,可是這是錯誤的寫法
while(a
while(a