我有一个问题:
为什么(a == b == c)if中的if语句不起作用?
例如,我有这段代码:
int naxes1[1] = {6};
int naxes2[1] = {6};
int naxes3[1] = {6};
if (naxes1[0] == naxes2[0] == naxes3[0])
printf("first doesnot work\n");
if (naxes1[0] == naxes2[0] && naxes1[0]== naxes3[0])
printf("second works\n");
为什么呢?
答案 0 :(得分:4)
因为它的评估如下:
if ((naxes1[0] == naxes2[0]) == naxes3[0])
// ^----------------------^---- Note
...而且内在表达的结果不是naxes1[0]
或naxes2[0]
中的值,它是一个布尔值。
答案 1 :(得分:2)
操作顺序。第一个==
将产生true
或1
。然后,当您将1
与naxes[0]
进行比较时,
1 == 6
这是假的,因此你得到0
并且它不会打印。