int a=1,b=2,c; 表达式(c=a<b?a=4,a<b?b=10,c=20:30:40)的结果为( )
2个回答
展开全部
追问
三目运算符的结合性不是从右至左吗?也就是先找最右边的"?",再找与之最近匹配的":"(课本上这么说的)
追答
三目运算符的结合性是从右至左的找最右边的"?",注意一点,是与之最近"匹配"的":"
注意是”匹配”!
假如第一个问号和第一个":"进行匹配,那遇到第二个问号的时候,就没有与之相匹配的":"条件了。
而且建议是不要省略中间的括号,这不是好的编码习惯。
如果有必要这种关系,请自己加上括号。如下所示:
c=a<b?( (a=4,a<b?b=10,c=20):(30)):(40)
2016-05-20
展开全部
合法,C语言中“等号表达式”的结果,就是等号右边的数值。例如a=b=4;这里的顺序是a=(b=4);b=4就是等号表达式,这个表达式的结果就是4,所以a也被赋予4。另一种常见的写法while((ch=getch())!='q'){}这里先执行ch=getch(),然后这个表达式的结果,和'q'进行比较。回过来,看你的问题1.b=4后,b的值是4,表达式值42.a=3后,a的值是3,表达式值33.a-=4*3,也就是a=a-12,得到-9,表达式值-94.a+=(-9),a=a-9=-18所以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询