#include <stdio.h>
int main()
{
int a = 10, b = 5, c = 5;
int d;
d = b + c == a;
printf("%d", d);
}
在上面的代码中,有任何人可以向我解释d = b + c == a
的工作原理吗?
答案 0 :(得分:6)
由于运算符优先级,它被解析为
d = ((b + c) == a);
b + c
为10,等于a
,因此d
接收值1,这就是C表示真实比较的方式。
答案 1 :(得分:4)
基于运算符的优先级,二进制+
的优先级高于==
。因此该声明将分组为,
d = ( b + c ) == a;
哪个成了,
d = ( ( b + c ) == a ); // ==> d = ( 10 == 10 );
因此,d
根据(b+c) == a
比较1
保存真值,因为在C比较运算符中,1
将返回true和0
为假。
答案 2 :(得分:2)
它的作品就像这样
d = (b+c) == a --> (5+5) == 10 ---> 1
返回1
答案 3 :(得分:2)
+
运算符的优先级高于==
。因此d=b+c==a;
解析为d=((b+c)==a);
。 b+c
是10
所以(10==a)
评估为真.So d=1;