运算符的左结合,右结合

能不能给举个例子讲讲左右结合性,到底什么是左结合,什么是右结合,谢谢回复!

晕倒,楼上讲得什么呀!错误!
一个多运算对象的表达式运算时的前后顺序是先看优先级,高优先级先计算,低优先级后计算!在优先级相同的情况下,要看结合性,左结合性的运算符由左向右运算,右结合的运算符由右向左运算!
C语言中具有右结合性的运算符包括所在单目运算符以及赋值运算符(=)和条件运算符。其它都是左结合性!
例如:
表达式a=b=c+d+e*f
式中*号优先级最高,所以首先计算e*f,然后两个+号涉及的三个对象c、d、(e*f)的计算顺序则是左结合,即先计算c+d,然后再计算(c+d)+(e*f)!
因为赋值运算符=的优先级低于算术运算符,所以之后再计算:
a=b=(c+d+e*f),而又因为=的结合性是由右向左,所以接下来再计算:
b=(c+d+e*f),最后才计算a=(b=(c+d+e*f))!!!
而楼上说的例子就更错了!
函数的参数先右后左是指当一个函数的参数有多个时,先计算右边的参数再计算左边的参数!而楼上的例子printf("%d",a/b*c);只有一个参数,无论如何a/b*c都是先a/b再*c!
如果int i=1;printf("%d %d"i,++i);这个例子才能体现函数参数的计算顺序,先计算右边++i,再i,所以结果是2 2,而不是1 2。但和结合性无关,这是函数参数求值顺序!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-12-17
左结合性是:从左至右运算,
右结合性正好相反,
一般情况下结合性都和常规一样,但C语言里printf函数里的表达式满足右结合性:printf(“%d”,a+b+c);
此表达式先算b+c在用b+c的值和a相加 虽然和a+b再+c结果一样 ,但要注意结合性是不同的

楼主可以试试看printf("%d",a/b*c);

上面是我刚开始的回答,相信也有人犯过我这样的错误,现在有人指出来了。同喜啊。
感谢1楼的人
第2个回答  2021-01-06
当然是右结合。
譬如这个表达式: a == b ? a : b ? c : d
它的结合是这样的 a == b ? a : (b ? c : d)
如果是左结合,它的结合是这样的: a == (b ? a : b) ? c : d

相关了解……

你可能感兴趣的内容

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