0

我知道 strcmp 返回...

大于零的值表示第一个不匹配的字符在 str1 中的值大于在 str2 中的值;小于零的值表示相反。

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

4

4 回答 4

9

该标准没有告诉您具体数字的含义。每个实现都可以返回它喜欢的任何东西,只要它返回适当的大于、等于或小于零。

于 2012-08-01T13:50:29.627 回答
7

简而言之,什么都没有。它通常取决于函数是如何实现的,但你不能依赖它。

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

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

于 2012-08-01T13:50:11.653 回答
7

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

2 > 0

所以

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

于 2012-08-01T13:50:14.257 回答
2

只有返回整数的符号是​​有意义的。尽管在大多数实现中它通常是 -1、0 和 +1(分别),但从不依赖确切的值。

于 2012-08-01T13:51:09.890 回答