#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
工作的吗?
由于运算符优先级,它被解析为
d = ((b + c) == a);
b + c
是 10,等于a
,所以d
接收到 1 的值,这就是 C 表示真实比较的方式。
根据运算符的优先级, binary+
的优先级高于==
. 因此,该语句将被分组为,
d = ( b + c ) == a;
这变成了,
d = ( ( b + c ) == a ); // ==> d = ( 10 == 10 );
因此,d
根据比较保持真值,(b+c) == a
这是1
因为在 C 中比较运算符将返回1
true 和0
false。
它的作品是这样的
d = (b+c) == a --> (5+5) == 10 ---> 1
返回 1
+
运算符的优先级高于==
.Sod=b+c==a;
解析为d=((b+c)==a);
. b+c
是 10。
所以(10==a)
评估为真。所以d=1;