3 回答

TA貢獻1807條經驗 獲得超9個贊
對于循環而言,它比if語句更有用。
while( var = GetNext() )
{
...do something with var
}
否則必須寫
var = GetNext();
while( var )
{
...do something
var = GetNext();
}

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()

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),但是我認為以上是一個易于理解的成語。
添加回答
舉報