C中这个语句怎样体现自增运算符的“右结合性”

i=3
k=2+i++

这个语句具体是怎样进行运算的?

op++
自增1;它是在自增之前计算op的数值的。

++op
自增1;它是在自增之后计算op的数值的。

k=2+i++
可以看作(k=2+i)++,所以k=5

C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合, 执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。 C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。

自增1运算符记为“++”,其功能是使变量的值自增1。自减1运算符记为“--”,其功能是使变量值自减1。自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式: ++i i自增1后再参与其它运算。--i i自减1后再参与其它运算。

i++ i参与运算后,i的值再自增1。
i-- i参与运算后,i的值再自减1。

在理解和使用上容易出错的是i++和i--。 特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细分析。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-08-01
在这题中体现不出右结合性,所谓的结合性,只在相同优先级的运算符出现时才能体现出来,这里k=2+i++,++的优先级显然高于+,自然先运算,和结合性无关。本回答被提问者采纳
第2个回答  2006-04-21
i=3
k=2+i++
你先要明白运算的优先级,i++最高,所以先算,因为是表达式所以i++等于3,最后k等于5
总之相当于k=2+(i++)
相似回答