请注意,我已经查看了与该标题相关的相关问题,但从我的角度来看,它们与此问题无关。
最初,我认为程序1和程序2会给我相同的结果。
我所发现的唯一区别是,在程序2中我传递了字符串字面量,而在程序中我传递了
最初,我认为程序1和程序2会给我相同的结果。
//Program 1
char *a = "abcd";
char *b = "efgh";
printf("%d", strcmp(a,b));
//Output: -4
//Program 2
printf("%d", strcmp("abcd", "efgh"));
//Output: -1
我所发现的唯一区别是,在程序2中我传递了字符串字面量,而在程序中我传递了
char *
作为 strcmp()
函数的参数。为什么这些看起来相同的程序行为有差异?平台:Linux mint 编译器:g++。编辑:实际上,程序1总是打印第一个不匹配字符的 ASCII 码差异,但是如果字符串2中第一个不匹配字符的 ASCII 码大于字符串1,则程序2会打印-1,反之亦然。