在检查strcmp
函数的返回值时,我发现gcc存在一些奇怪的行为。下面是我的代码:
#include <stdio.h>
#include <string.h>
char str0[] = "hello world!";
char str1[] = "Hello world!";
int main() {
printf("%d\n", strcmp("hello world!", "Hello world!"));
printf("%d\n", strcmp(str0, str1));
}
当我使用clang编译时,两次调用
strcmp
函数均返回32。但是,当我使用gcc编译时,第一次调用返回1,第二次调用返回32。我不明白为什么在使用gcc编译时,第一次和第二次调用strcmp
会返回不同的值。以下是我的测试环境:
- Ubuntu 18.04 64位
- gcc 7.3.0
- clang 6.0.0
'h'
和'H'
之间的差异是32。巧合吗? - Christian Gibbons