亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么要在條件中使用作業?

為什么要在條件中使用作業?

在許多語言中,條件分配是合法的。我從不了解背后的原因。你為什么寫:if (var1 = var2) {  ...}代替:var1 = var2;if (var1) {  ...
查看完整描述

3 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

對于循環而言,它比if語句更有用。


while( var = GetNext() )

{

  ...do something with var 

}

否則必須寫


var = GetNext();

while( var )

{

 ...do something

 var = GetNext();

}


查看完整回答
反對 回復 2019-09-24
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

我發現它在經常涉及錯誤檢測等操作的一系列動作中最有用。


if ((rc = first_check(arg1, arg2)) != 0)

{

    report error based on rc

}

else if ((rc = second_check(arg2, arg3)) != 0)

{

    report error based on new rc

}

else if ((rc = third_check(arg3, arg4)) != 0)

{

    report error based on new rc

}

else

{

    do what you really wanted to do

}

備選方案(不在條件中使用分配)是:


rc = first_check(arg1, arg2);

if (rc != 0)

{

    report error based on rc

}

else

{

    rc = second_check(arg2, arg3);

    if (rc != 0)

    {

        report error based on new rc

    }

    else

    {

        rc = third_check(arg3, arg4);

        if (rc != 0)

        {

            report error based on new rc

        }

        else

        {

            do what you really wanted to do

        }

    }

}

使用長時間的錯誤檢查,替代方法可以在頁面的RHS之外運行,而有條件分配版本則不能這樣做。


錯誤檢查也可能是“行動” - ,,first_action() -當然,而不是僅僅檢查。即,可以在功能正在管理的過程中檢查它們。(在我使用的代碼中,大多數情況下,這些功能都是基于前提條件檢查,或者功能正常工作所需的內存分配,或者類似的方式)。second_action()third_action()


查看完整回答
反對 回復 2019-09-24
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

如果要調用一個函數,它會更有用:


if (n = foo())

{

    /* foo returned a non-zero value, do something with the return value */

} else {

    /* foo returned zero, do something else */

}

當然,您可以將n = foo(); 在一個單獨的語句上,然后是(n),但是我認為以上是一個易于理解的成語。


查看完整回答
反對 回復 2019-09-24
  • 3 回答
  • 0 關注
  • 510 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號