strcmp的返回值是什么意思?

时间:2012-08-01 13:48:49

标签: c++

我知道strcmp会返回......

  

大于零的值表示第一个字符   不匹配在str1中的值大于在str2中的值;而且价值更低   比零表示相反。

但这些正面或负数意味着什么呢?例如2是什么意思?

4 个答案:

答案 0 :(得分:9)

该标准并未告诉您具体数字的含义。每个实现都允许返回它喜欢的任何内容,只要它在适当时返回更大,相等或小于零。

答案 1 :(得分:7)

总之,没什么。它通常取决于功能的实现方式,但您不能依赖它。

例如,在他们在这里讨论的实现(第3篇文章):http://compsci.ca/v3/viewtopic.php?t=24383它返回第一个不同字符(的数字表示)之间的差异,即strcmp("ab","ad")将返回{{1 }}

或者,对于此实施,http://en.wikibooks.org/wiki/C_Programming/Strings#The_strcmp_function相同的调用将返回-2

答案 2 :(得分:7)

  

大于零的值表示第一个字符   不匹配在str1中的值大于在str2中的值

  

2> 0

所以

  

2表示第一个字符   不匹配在str1中的值大于在str2中的值

答案 3 :(得分:2)

只返回整数的符号才有意义。虽然在大多数实现中它通常为-1,0和+1(分别),但绝不会依赖于确切的值。