do{ }while();循環 當while中條件為真 也就是true 循環繼續執行. 否則循環結束.
do{}while(false) 最大意義是:簡化 if else 的嵌套結構判斷邏輯。
do { //執行的任務 } while (); //判斷條件是否為真
一些代碼都分段包含在了do{...}while(false)區間里。
一般來說,使用do while是為了循環,但這里循環條件是false,根本就不會有循環,那么意義何在?
上網查了下后得到結論:使用do{...}while(false)結構可以簡化多級判斷時代碼的嵌套。
舉個例子:現在要實現一個功能,但需要A、B、C、D四個前提條件,並且這四個前提條件都存在上級依賴,即B依賴於A,C依賴於A和B,D依賴於A、B和C。如果按照一般的寫法,是這樣:
if( A==true ) { if( B==true ) { if( C==true ) { if( D==true ) { //實現功能代碼 } } } }
可能看出來,這樣導致多層if語句嵌套,看起來邏輯很不清晰。
一種解決的辦法是使用goto語句,當某個條件不成立時,直接跳轉到之后的語句段,(類似Oracle 中的 <<endp>>)形如這樣:
if( A==false ) goto tag; if( B==false ) goto tag; if( C==false ) goto tag; if( D==false ) goto tag; //實現功能代碼 tag: ...
這樣看起來風格是好多了,但使用goto語句會有很多隱患,一般是不建議用的。
其實使用do while語句也可以實現類似goto的功能,但代碼可讀性會比goto風格好很多。代碼如下:
do { if( A==false ) break; if( B==false ) break; if( C==false ) break; if( D==false ) break; //實現功能代碼 }while(false); ...
既然后面的判斷依賴前面的判斷結果,那么所有的條件都去判斷是否等於false,等於false的直接break跳出do while 循環。這樣的代碼風格是不是比剛才那種寫法清爽多了。
這樣就可以明白了: 在 do{...}while(false)中的代碼段,可以用break的方式實現類似goto的跳轉功能
while(true)就是無限循環語句。因為括號中的條件為true,所以永遠不會跳出循環,除非語句塊中有break語句才都能跳出循環。
看了 好多 還是這篇文章容易理解
原文鏈接:https://blog.csdn.net/this_capslock/article/details/41843371
