3 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
對(duì)于循環(huán)而言,它比if語句更有用。
while( var = GetNext() )
{
...do something with var
}
否則必須寫
var = GetNext();
while( var )
{
...do something
var = GetNext();
}

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
我發(fā)現(xiàn)它在經(jīng)常涉及錯(cuò)誤檢測(cè)等操作的一系列動(dòng)作中最有用。
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
}
}
}
使用長時(shí)間的錯(cuò)誤檢查,替代方法可以在頁面的RHS之外運(yùn)行,而有條件分配版本則不能這樣做。
錯(cuò)誤檢查也可能是“行動(dòng)” - ,,first_action() -當(dāng)然,而不是僅僅檢查。即,可以在功能正在管理的過程中檢查它們。(在我使用的代碼中,大多數(shù)情況下,這些功能都是基于前提條件檢查,或者功能正常工作所需的內(nèi)存分配,或者類似的方式)。second_action()third_action()

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果要調(diào)用一個(gè)函數(shù),它會(huì)更有用:
if (n = foo())
{
/* foo returned a non-zero value, do something with the return value */
} else {
/* foo returned zero, do something else */
}
當(dāng)然,您可以將n = foo(); 在一個(gè)單獨(dú)的語句上,然后是(n),但是我認(rèn)為以上是一個(gè)易于理解的成語。
添加回答
舉報(bào)