我知道在C语言中比较“字符串”的正确方法是使用strcmp
,但现在我尝试使用==
运算符来比较一些字符数组,结果得到了一些奇怪的结果。
请看下面的代码:
int main()
{
char *s1 = "Andreas";
char *s2 = "Andreas";
char s3[] = "Andreas";
char s4[] = "Andreas";
char *s5 = "Hello";
printf("%d\n", s1 == s2); //1
printf("%d\n", s3 == s4); //0
printf("%d\n", s1 == s5); //0
}
请问为什么第一个
printf
返回了1
(即它们相等),但是比较字符数组时,==
返回了0
?请有人解释一下。
bool
作为变长参数时,将隐式提升为int
- 参见5.2.2[expr.call]/7和4.5[conv.prom]/4。 - Pavel Minaev