我對這個說法有點困惑。
if( Ql_StrPrefixMatch(strURC, urcHead) )
{
callback_NTPCMD((char*)strURC);
}
Ql_StrPrefixMatch的源代碼是:
s32 Ql_StrPrefixMatch(const char* str, const char *prefix)
{
for ( ; *str != '\0' && *prefix != '\0' ; str , prefix )
{
if (*str != *prefix) {
return 0;
}
}
return *prefix == '\0';
}
if 陳述句如何根據Ql_StrPrefixMatch函式的回傳值評估為True或False,因為它回傳 0 或 *prefix == '\0'?回傳 0 是否意味著False?請幫我解釋這一點。先感謝您
uj5u.com熱心網友回復:
....因為它要么回傳 0 要么回傳 '\0'?
不,第二個 return 陳述句使用比較運算子,而不是賦值。即回傳0or 1。該回傳值用于評估if陳述句。
uj5u.com熱心網友回復:
s32 是有符號整數。該函式回傳 0 或 1。然后 C 將其解釋為布林值。
為什么函式回傳 1?
*prefix == '\0'給出一個布林值,然后將其轉換為 s32.
uj5u.com熱心網友回復:
是的,確實,你是最新的。c 中的 0 表示假,另一方面,NULL 或 '\0' 的計算結果也為假。您可以參考此答案進行查詢。所以你可以猜到, if(0) 和 if('\0') 將被評估為 if 陳述句的錯誤分支。此外,附加資訊:任何非零值都將被評估為真。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512699.html
標籤:C返回函数调用
