繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM