我試圖撰寫一個函式,該函式具有一個名為name的字串作為輸入以及其他輸入(與此問題的目的無關)。需要做的一件事是在檢查名稱(函式的輸入)是否對應于已存盤在名為候選者的陣列中的名稱之一(已在主程式中較早填充)之后做“某事”。問題是,當使用 strcmp() 作為 for 回圈內的條件時,如下面的代碼所示,該函式似乎不起作用:
bool vote(int rank, string name, int ranks[])
{
// TODO
for (int c = 0; c < candidate_count && strcmp(candidates[c], name) == 0 ; c )
{
ranks[rank] = c;
return true;
}
return false;
}
但是,當在 for 回圈括號內的“If”陳述句中用作條件時,它似乎作業得很好,如下面的代碼所示:
bool vote(int rank, string name, int ranks[])
{
// TODO
for (int c = 0; c < candidate_count; c )
{
if ((strcmp(candidates[c], name)) == 0)
{
ranks[rank] = c;
return true;
}
}
return false;
}
我很難找到兩個版本的代碼之間的區別。您能否確定問題的原因?提前致謝 !
uj5u.com熱心網友回復:
代碼的底層版本是檢查是否有任何候選人與名稱匹配。
最高版本檢查第一個候選人是否與名稱匹配。如果匹配,則進入回圈并回傳 true。如果不匹配,for則不滿足回圈條件,因此回圈退出并回傳 false。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/427740.html
