C++中如下多个条件表达式嵌套的语句怎么理解?

#include <iostream.h>
void main( )
{
int a=3,b=4,c;
c=a-b?a-3?b:b-a:a;
cout<<a<<","<<b<<","<<c<<endl;
}

c=a-b?a-3?b:b-a:a;
是说这一句吧?
这是一个条件运算符的语句;包含两个条件运算符和一个赋值运算符。
从两个方面来解释:运算符优先级,运算符结合性。

优先级:条件运算符高于赋值运算符,二者的结合性都是从右向左。
上面的语句相当于:c=a-b?(a-3?b:b-a):a;

即按照结合性,先计算右面的条件运算表达式;再按照优先级,赋值。
结果是3,4,1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-07
c=(a-b)?(a-3?b:b-a):a;

==============================

写成这样你就好理解了

先判断a-b 不为0 即c= 分号前面的(a-3?b:b-a)

这里 a-3为0 所以表达式的值为b-a=1 所以()的值为1 那c的值就是1了

随意输出3 4 1
第2个回答  2008-11-07
晕,这个表达式好怪异.

a-3?b:b-a 先算这个,如果a-3为真,那么表达式的值为b否则是b-a 因为a=3,b=4,所以a-3为假,b-a的值为1,所以这个表达式的值为1

a-b?1:a 如果a-b为真,则表达式的值为1,否则为a的值.a-b得-1,为真,最后表达式的值为1。
c=1;

最后的输出结果为:3,4,1
第3个回答  2008-11-07
多重条件表达式计算顺序为自右往左。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网