为了账号安全,请及时绑定邮箱和手机立即绑定

关于嵌套的三目运算符


原题: 设有int x=1,y=0;则以下表达式的值为  x-->(y+x)?10:12.5>y++?'A':'Z' 

#include

int main()

 {

 int a,x,y; 

 x=1; 

 y=0;  

  a=(x-->(y+x)?10:12.5>y++?'A':'Z'); 

 printf("%d\n",a); 

 return 0; 

}



答案是10,可为什么wo de 编程输出的是65, 请问错在哪里了?

正在回答

4 回答

分解一下,a=(x-->(y+x)?10:12.5>y++?'A':'Z'); 

前半部分

 x-->(y+x)?10:12.5 //这里结果为多少 x--先赋值后运算,这时候x=1,(y+x)=1,那x-->(x+y)则不成立,则返回值
为12.5

后半部分

12.5>y++?'A':'Z');   //y++先赋值后运算  所以这时候y值依旧为0,所以12.5>y++返回true,最后结果为A的ASCLL
码对应的值 65

所以骚年,你的结果是对的?谁告诉你正确答案是10的?

1 回复 有任何疑惑可以回复我~
#1

朝闻道夕 提问者

额,明白了,谢谢 我在(x+y)时将x的值算成0了,应该在第一步就先算(x+y)的,谢谢了
2015-12-20 回复 有任何疑惑可以回复我~
#2

红颜未知己 回复 朝闻道夕 提问者

不客气 多点细心 出问题多检查
2015-12-21 回复 有任何疑惑可以回复我~

是65啊 - -

1 回复 有任何疑惑可以回复我~

哎哟 看错了 是没有()的高 不是-->

1 回复 有任何疑惑可以回复我~

结果是65 三目运算符的优先级 没有-->和()的高

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       927288    人
  • 解答问题       21537    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

关于嵌套的三目运算符

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号