這段代碼的分析圖不是很懂啊,b等于多少內回圈才結束?怎么分析?求大佬解惑。

uj5u.com熱心網友回復:
分析圖已經很明確了首先要理解,b--是先取b的值做運算,運算結束后b的值遞減1
所以
i=1第一次大回圈
b=i%2=1
然后第一次內回圈
b=1,while(b-->=0)的執行順序是,先取b的值1來做比較運算,運算結果為true,然后b遞減1變為0,然后while(運算結果true)滿足回圈條件,進入內回圈執行k++,k變為1,列印b=0,k=1
然后第二次內回圈
b=0,while(b-->=0)的執行順序是,先取b的值0來做比較運算,運算結果為true,然后b遞減1變為-1,然后while(運算結果true)滿足回圈條件,進入內回圈執行k++,k變為2,列印b=-1,k=2
然后第三次內回圈
b=-1,while(b-->=0)的執行順序是,先取b的值-1來做比較運算,運算結果為false,,然后b遞減1變為-2,然后while(運算結果false)不滿足回圈條件,內回圈結束
內回圈結束后繼續i=2第二次大回圈
b=i%2=0
然后內回圈,while(b-->=0)的執行順序同上
依次類推,直到大回圈結束
uj5u.com熱心網友回復:
上面列印部分說錯了,列印部分在內回圈外,看錯了,看成列印部分在內回圈了。首先要理解,b--是先取b的值做運算,運算結束后b的值遞減1
所以
i=1第一次大回圈
b=i%2=1
然后第一次內回圈
b=1,while(b-->=0)的執行順序是,先取b的值1來做比較運算,運算結果為true,然后b遞減1變為0,然后while(運算結果true)滿足回圈條件,進入內回圈執行k++,k變為1(這里看錯了,沒有列印資訊)
然后第二次內回圈
b=0,while(b-->=0)的執行順序是,先取b的值0來做比較運算,運算結果為true,然后b遞減1變為-1,然后while(運算結果true)滿足回圈條件,進入內回圈執行k++,k變為2
然后第三次內回圈
b=-1,while(b-->=0)的執行順序是,先取b的值-1來做比較運算,運算結果為false,然后b遞減1變為-2,然后while(運算結果false)不滿足回圈條件,內回圈結束
然后執行列印,b=-2,k=2(這里才有列印)
然后繼續i=2第二次大回圈
b=i%2=0
然后內回圈,while(b-->=0)的執行順序同上
依次類推,直到大回圈結束
uj5u.com熱心網友回復:
暈,還是看錯列印部分了,列印在外回圈。
你就理解while的分析就好了,列印部分忽略
uj5u.com熱心網友回復:
b-- >= 0注意是先把b--整個運算式的值與0比較,再計算自減~轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17569.html
標籤:C語言
