设int a=5,b=6,表达式(++a==b--)?++a:--b的值是

iiiiiiiipl
2019-06-21 · TA获得超过9921个赞
知道答主
回答量:68
采纳率:66%
帮助的人:3.7万
展开全部

结果为7。

条件表达式为:表达式1?表达式2:表达式3。先求解表达式1,若其值为真(非0)则将表达式2的值作为整个表达式的取值,否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。

先判断++a==b--是否为真,++a表达的值为6,b--表达的值为6,两者相等,为真。则将表达式++a的值作为整个表达式的取值,因为在此之前a的值已经自增变成6,再进行++a表达式的值为7。

扩展资料:

1、优先级

条件运算符优先级高于赋值、逗号运算符,低于其他运算符

例如:

⑴ m<n ? x : a+3

等价于:(m<n) ?(x) :(a+3)

⑵ a++>=10 && b-->20 ? a : b

等价于:(a++>=10 && b-->20) ? a : b

2、结合性

条件运算符具有右结合性

当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。

例如:

w<x ? x+w : x<y ? x : y

与 w<x ? x+w : ( x<y ? x : y) 等价

与 (w<x ? x+w : x<y) ? x : y 不等价

参考资料:

百度百科-条件运算符

hasyaa
推荐于2018-02-27 · TA获得超过237个赞
知道答主
回答量:123
采纳率:0%
帮助的人:71.7万
展开全部
最後值为7,这是一个if语句,就是
int a=5,b=6;
if(++a==b--) ++a;
else --b;

++ar的规则是先运算,所以括号中左值++a=6,a=6;
==的优先级低过--,所以先计算b--
b--的规则是先赋值,所以括号中右值b--=6,b=5;
左值6==右值6,即条件为真,执行++a,因为a值已是6, 所以加1操作後,
结果为 7
追问
左等于6,右等于5,怎么会相等?
追答
最後值为7,这是一个if语句,就是
原程序等價:
int a=5,b=6;
if(++a==b--) ++a;
else --b;

++a的规则是先运算++a=6,所以括号中左值,a=6;
==的优先级低过--,所以先计算b--
b--的规则是先赋值b--=6,所以括号中右值,b=5;
左值6==右值6,即条件为真,
执行++a,因为a=6, 所以工a+1=7,
结果为 7
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
屋石
2011-08-24 · TA获得超过5351个赞
知道大有可为答主
回答量:1909
采纳率:86%
帮助的人:890万
展开全部
7,条件表达式条件为真,取值为++a;原来为6,执行++a后为7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式