【发布时间】:2021-07-31 15:34:50
【问题描述】:
int main()
{
int a=0,b=0,c=0;
if (a==b==c)
{
printf("111\n");
}
else
{
printf("222\n");
}
if (a==b)
{
printf("333");
}
}
输出是
222
333
很明显,a==b==c 是False,a==b 是True。 但我找不到原因。 我想也许 a==b==c 是匹配变量的地址。 我需要更多的线索和证据。
【问题讨论】:
-
a == b == c是(a == b) == c是0 == c或1 == c(如果a和b具有相同的值......是1 == c)。等式运算符==产生一个int,其值为0或1。 -
这是关于运算符关联性。对于
==运算符,它从左到右导致@pmg 提到的情况。 -
只是不要写
a == b == c之类的代码。奇怪的代码给出了奇怪的结果。 -
非常频繁的受骗。您应该使用上面的 SO 搜索框。
标签: c comparison operators