我的代码非常少:
int test = strcmp("Websecurity", "easily");
printf("%d\n", test);
结果是-1。为什么?显然' W'大于'?
答案 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。因此,您可以获得负回报值。