我想知道为什么在同一个函数中多次使用strcmp()
会返回不同的值。以下是程序。第一种情况我知道为什么会打印出-6。但在第二种情况下,为什么会打印出-1?
#include<stdio.h>
#include<string.h>
int main()
{
char a[10] = "aa";
char b[10] = "ag";
printf("%d\n",strcmp(a, b));
printf("%d\n",strcmp("aa","ag"));
return 0;
}
以下是它所产生的输出结果。
[sxxxx@bhlingxxx test]$ gcc -Wall t51.c
[sxxxx@bhlingxxx test]$ ./a.out
-6
-1
为什么第二个
strcmp()
的输出是 -1?这是编译器在起作用吗?如果是,它到底做了什么优化?
char* c="aa", *d = "ag";
将产生相同的-6
。 - Duck Dodgers