2013-01-18 85 views
5

的C/C++ STRNCMP簽名是這樣的:C/C++是什麼STRNCMP的返回值時的大小爲0

int strncmp (const char * str1, const char * str2, size_t num); 

我的問題是什麼是返回值,如果num爲0?標準如何說?不要從一些在線文檔中找到答案。

謝謝。

+0

按道理它應該是0,因爲沒有辦法對一個的琴絃比另一個更大或更小。 –

+0

你可以隨時[嘗試看看](http://ideone.com/4e4frw)。 – ellotheth

回答

6

好,strncmp比較從兩個字符串最num字符,所以用num == 0,就比較沒有,因此認爲沒有什麼區別,所以返回0

+0

但這沒有任何意義。返回0意味着兩個字符串是相同的。實際上沒有。如果這是標準說的話,那麼我認爲這是標準中的一個錯誤。我想,無論返回0還是1,這都不是一個合理的值。 –

+3

@nowgainsnowpains:包含零個字符的字符串與另一個包含零個字符的字符串相同。 –

+3

@nowgainsnowpains儘管從'strcmp'返回0意味着這些字符串是相等的,但這不適用於'strncmp'。對於那個函數,返回0意味着第一個'n'字符的子字符串是相等的。爲'n'傳遞零有效意味着比較兩個確實相等的空字符串。 – dasblinkenlight

相關問題