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

标签 c if-statement

我有一个问题:
为什么 C 中 if 语句中的 (a == b == c) 不起作用?

例如,我有这样的代码:

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

最佳答案

因为它是这样评估的:

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

...该内部表达式的结果不是 naxes1[0]naxes2[0] 中的值,它是一个 bool 值。

关于c - 为什么 C 中 if 语句中的 (a == b == c) 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31880467/

相关文章:

c - 如何手动替换 C 中字符串中的最后一次出现?

sql-server - SQL Server 内联 IF ELSE

javascript - 专注于输入以显示来自 if/if else 条件的控制台日志消息?

javascript - 使用一个 if else 语句为不同上下文中的进度条着色

c - 带有条件的循环中的 scanf() 不起作用

c - 尝试专门使用内部函数时出现段错误 _mm256_storeu_pd()

c - C中 "#pragma section <XYZ>"有什么用?

c - 分配多少空间用于在字符串中打印 long int 值?

c - 理解这些过程如何运作的问题

MYSQL 如果还有什么?正确的说法是什么(来自多个供应商的库存)