0
#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

4 回答 4

6

由于运算符优先级,它被解析为

d = ((b + c) == a);

b + c是 10,等于a,所以d接收到 1 的值,这就是 C 表示真实比较的方式。

于 2013-06-25T10:10:21.003 回答
4

根据运算符的优先级, binary+的优先级高于==. 因此,该语句将被分组为,

d = ( b + c ) == a;

这变成了,

d = ( ( b + c ) == a );    // ==>  d = ( 10 == 10 );

因此,d根据比较保持真值,(b+c) == a这是1因为在 C 中比较运算符将返回1true 和0false。

于 2013-06-25T10:09:28.167 回答
2

它的作品是这样的

d = (b+c) == a --> (5+5) == 10 ---> 1 

返回 1

于 2013-06-25T10:12:29.377 回答
2

+运算符的优先级高于==.Sod=b+c==a;解析为d=((b+c)==a);. b+c是 10。
所以(10==a)评估为真。所以d=1;

于 2013-06-25T10:14:49.527 回答