为什么 d 的值是 1 而不是 6?

Why is the value of d 1 and not 6?

提问人: 提问时间:9/18/2019 最后编辑:Blaze 更新时间:9/19/2019 访问量:92

问:

#include <stdio.h>
    int main()
    {
        int a = 10, b = 5, c = 5;
        int d;
        d = b + c==a;
        printf("%d", d);
    }

我以为会计算到,即将是输出,但它是,如果我更改为,那么输出是。为什么?c==a1b+15+1=61+*0

c 平等

评论

6赞 rafix07 9/18/2019
请参阅运算符优先级。是的。(b+c) == a
5赞 Timbo 9/18/2019
然后,c 甚至不等于 a!
0赞 9/18/2019
@ rafix07 ,是的,知道了。

答:

5赞 Blaze 9/18/2019 #1

这是运算符优先级的情况。 具有比 更高的优先级,因此这+==

b + c==a;

(b + c) == a;

所以它变成了

10 == 10;

这是.1


如果我将 + 更改为 *,则输出为 0

然后我们有 which is which is .(5 * 5) == 1025 == 100

-1赞 Berat 9/18/2019 #2

只需将语句 c==a 放在 paranthases 中即可

d = b + (c==a);

2赞 Rishikesh Raje 9/18/2019 #3

请参阅运算符优先级表

+具有更高的优先级,并且具有更高的优先级=====

所以等式变成

d = ((b + c)==a)
d = ((5 + 5)==10);
d = (10==10)
d = 1;

如果您有

d = b * c==a;
d = ((b*c)==a);
d = ((5*5)==10);
d = (25==10);
d = 0;
2赞 machine_1 9/18/2019 #4

每当在语句中使用多个运算符时,都必须注意运算符的优先级。“+”的优先级高于“==”,因此

b + c==a;

被解释为:

(b + c) == a;

如果这不是你想要的,那么你应该用括号括起来 'c==a':

b + (c == a) ;