设有int a=3,b;,则执行语句:b!(a>2);后,b的值

如题所述

1和1
对于!(a+b)+c-1&&b+c/2 ,&&前后接两个表达式,一个是!(a+b)+c-1,另一个是b+c/2 ,第一个表达式结果为c-1即2(因为(a+b)非0,故!(a+b)结果为0),第二个表达式结果为6,所以这两个表达式均为非零,所以它们进行逻辑与操作之后的结果为1
对于a || b+c&& b == c,||逻辑或操作符连接两个表达式,但是第一个表达式为a,非0,故不用求后一个表达式的值,所以该表达式结果为1

在vs2010上运行通过
测试代码如下:
int a=3,b=4,c=5 ;
int d = !(a+b)+c-1&&b+c/2;
int e = a || b+c&& b == c;
cout << d << endl ;
cout<< e;
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-25
根据运算符优先级:?:条件运算符大于=赋值运算符,
所以本题实际上是b=(a>3?2:1);
因为a=3,所以a>3判定失败,结果为1
所以b
=
1
第2个回答  2019-06-21
a>2成立,值为1,!(a>2)=!1=0
第3个回答  2018-06-21
你的这个执行语句真的可以执行么。。。
相似回答