一道C语言条件运算符运算顺序问题

问题描述:

一道C语言条件运算符运算顺序问题
已知a=1,b=2,c=3,d=4;执行表达式ac)?b=100:c后b的值是多少?
呃.我的主要疑问是,赋值运算符的结合方向不是自右向左吗,为什么不先进行右面的(d>c)?b=100:c呢?这样算下来就是100了.
1个回答 分类:综合 2014-11-07

问题解答:

我来补答
最后的值为2.分析如下:
先判断表达式a
再问: 可是赋值运算符的结合方向不是自右向左吗,为什么不先进行右面的(d>c)?b=100:c呢?
再答: 这涉及到C语言中的优先级、结合性、求值顺序。 对于?:,在C中与它优先级相同的只有它自己,因此只有连续的?:才会体现出它的右结合性,即a?b:c?d:e中,根据右结合性可知应理解为a?b:(c?d:e)。但是,还涉及到一个求值顺序的问题,a?b:c中,C语言规定先对a求值,非零则对b求值并作为该表达式的值,为零则对c求值并作为表达式的值,并且b和c中有且仅有一个会被求值。因此对于题目ac)?b=100:c,就像我以上的分析一样了
 
 
展开全文阅读
剩余:2000
下一页:填词谢谢