do{...}while(false)的用法


 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM