Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我知道 strcmp 返回...
大于零的值表示第一个不匹配的字符在 str1 中的值大于在 str2 中的值;小于零的值表示相反。
但是这些正数或负数是什么意思呢?例如 2 是什么意思?
该标准没有告诉您具体数字的含义。每个实现都可以返回它喜欢的任何东西,只要它返回适当的大于、等于或小于零。
简而言之,什么都没有。它通常取决于函数是如何实现的,但你不能依赖它。
例如,在他们在这里讨论的实现中(第 3 篇文章):http ://compsci.ca/v3/viewtopic.php?t=24383它返回第一个不同字符(的数字表示)之间的差异,strcmp("ab","ad")即返回-2。
strcmp("ab","ad")
-2
或者,对于此实现,http ://en.wikibooks.org/wiki/C_Programming/Strings#The_strcmp_function将返回相同的调用-1。
-1
大于零的值表示第一个不匹配的字符在 str1 中的值大于在 str2 中的值
和
2 > 0
所以
2 表示第一个不匹配的字符在 str1 中的值大于在 str2 中的值
只有返回整数的符号是有意义的。尽管在大多数实现中它通常是 -1、0 和 +1(分别),但从不依赖确切的值。