2013-01-18 82 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

相关问题