C 中奇怪的 strcmp 返回

0 c strcmp

为什么这段代码打印的是202?‘e’的ascii值为101,空字符的ascii值为0。那么它不应该打印101吗?

但是当我交换 s1 和 s2 时,我确实得到了 -101 作为答案。

#include<stdio.h>
#include<string.h>
int main(int argc, char *argv[])
{
    char s1[50] = "ape";
    char s2[50] = "ap";
    printf("%d ", strcmp(s1, s2));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

chu*_*ica 6

“那么它不应该打印101吗?”

不需要,strcmp()在这种情况下只需要返回一些正值。

当 s1 指向的字符串大于、等于或小于 s2 指向的字符串时,该strcmp函数相应地返回一个大于、等于或小于零的整数。