[英]how does “==” operator work in an expression?
#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表示真实比较的方式。
根据运算符的优先级,二进制+
优先级高于==
。 因此,该语句将被分组为:
d = ( b + c ) == a;
变成
d = ( ( b + c ) == a ); // ==> d = ( 10 == 10 );
因此, d
基于比较(b+c) == a
来保存真值,这是1
因为在C中,比较运算符将为true返回1
,为false返回0
。
它的作品是这样的
d = (b+c) == a --> (5+5) == 10 ---> 1
返回1
+
运算符的优先级高于==
。因此d=b+c==a;
解析为d=((b+c)==a);
。 b+c
是10
因此(10==a)
得出true。因此d=1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.