`strcmp'的返回值的顺序是什么?

时间:2015-02-04 22:30:22

标签: c string strcmp

我的代码非常少:

int test = strcmp("Websecurity", "easily");
printf("%d\n", test);

结果是-1。为什么?显然' W'大于'?

2 个答案:

答案 0 :(得分:7)

大写字母在ASCII中以小写字母开头,因此'W' < 'e'

答案 1 :(得分:3)

strcmp的返回值取决于要比较的字符串的编码。根据Posix标准:

来自:http://pubs.opengroup.org/onlinepubs/009695399/functions/strcmp.html

  

非零返回值的符号应由所比较的字符串中第一对字节(均被解释为unsigned char类型)的值之间的差异符号确定。

在ASCII(和utf-8)中,大写字母由低位字节值表示,而不是小写字母。特别地,'W'是0x57,e是0x65。因此,您可以获得负回报值。