【问题标题】:What happens when we arbitrarily use ==?当我们随意使用 == 时会发生什么?
【发布时间】:2015-07-19 10:55:22
【问题描述】:

我尝试在 C 中运行以下代码:

#include <stdio.h>

int main() {
   int a = 10, b = 5, c = 5;
   int d;
   d = b + c == a;
   printf("%d", d);
}

我得到的输出是d = 1。有人可以向我解释当我们这样使用== 时会发生什么吗?

【问题讨论】:

标签: c operators logical-operators relational


【解决方案1】:

§6.5.9(== 和 !=)-http://c0x.coding-guidelines.com/6.5.9.html

==(等于)和!=(不等于)运算符类似于关系运算符,除了它们的优先级较低。)如果指定的关系为真,则每个运算符产生 1,如果为假,则返回 0 .结果的类型为 int。 对于任何一对操作数,其中一个关系是正确的。

所以这里b+c 等于a,因为两者都有值10,因此它产生1

【讨论】:

    【解决方案2】:

    因为 b + c 先执行,然后是用 == 运算符进行比较。

    【讨论】:

      【解决方案3】:

      在c中,加法的优先级高于==,所以它在将结果与a比较之前将b和c相加,因为它为真结果为1,如果为假则结果为0。

      【讨论】:

        【解决方案4】:

        == 是等于运算符。如果两边相等则返回1,否则返回0

        【讨论】:

        • 即使在 C11 中 == returnsint,而不是 bool
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-25
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 2010-12-10
        • 2011-04-17
        • 1970-01-01
        相关资源
        最近更新 更多