提问人: 提问时间:9/18/2019 最后编辑:Blaze 更新时间:9/19/2019 访问量:92
为什么 d 的值是 1 而不是 6?
Why is the value of d 1 and not 6?
问:
#include <stdio.h>
int main()
{
int a = 10, b = 5, c = 5;
int d;
d = b + c==a;
printf("%d", d);
}
我以为会计算到,即将是输出,但它是,如果我更改为,那么输出是。为什么?c==a
1
b+1
5+1=6
1
+
*
0
答:
5赞
Blaze
9/18/2019
#1
这是运算符优先级的情况。 具有比 更高的优先级,因此这+
==
b + c==a;
与
(b + c) == a;
所以它变成了
10 == 10;
这是.1
如果我将 + 更改为 *,则输出为 0
然后我们有 which is which is .(5 * 5) == 10
25 == 10
0
-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) ;
评论
(b+c) == a