关于嵌套的三目运算符

来源:3-9 三目运算符

朝闻道夕

2015-12-19 13:37


原题: 设有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回答

  • 红颜未知己
    2015-12-19 15:06:08
    已采纳

    分解一下,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的?

    红颜未知己 回复朝闻道夕

    不客气 多点细心 出问题多检查

    2015-12-21 22:44:25

    共 2 条回复 >

  • 流浪_老
    2015-12-19 23:55:38

    是65啊 - -

  • 飞扬_
    2015-12-19 15:16:22

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

  • 飞扬_
    2015-12-19 15:14:37

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

C语言入门

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

926938 学习 · 21533 问题

查看课程

相似问题