“==”运算符如何在表达式中工作?

时间:2013-06-25 10:05:50

标签: c operators

#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的工作原理吗?

4 个答案:

答案 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;