为什么(a == b == c)if中的if语句不起作用?

时间:2015-08-07 14:41:08

标签: c if-statement

我有一个问题:
为什么(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");

为什么呢?

我通过以下链接:
Usage of greater than, less than operators

2 个答案:

答案 0 :(得分:4)

因为它的评估如下:

if ((naxes1[0] == naxes2[0]) == naxes3[0])
//  ^----------------------^---- Note

...而且内在表达的结果不是naxes1[0]naxes2[0]中的值,它是一个布尔值。

答案 1 :(得分:2)

操作顺序。第一个==将产生true1。然后,当您将1naxes[0]进行比较时,

1 == 6

这是假的,因此你得到0并且它不会打印。