关于c语言的自加自减运算

int a=5,b=8,c;
c=a++*b//a的值为6,c的值为40
c=++a*b//a的值为7,c的值为56
c=a--*b//a的值为6,c的值为56
c=--a*b//a的值为5,c的值为40
刚开始还看懂看到自减就不懂了,为什么a会那么变?该怎么理解?

具体分析:
首先须知: a++ 就是a先做其他运算,再做自加运算比如 a++*b a与b相乘5*8=40 然后a自加=6
++a 是a先做自加运算,再做其他运算,比如 ++a*b a先加得到7=6+1,然后再与b相乘,7*8=56
a--和--a也是同理。
然后自减的情况 a*b=7*8=56 然后a自减 7-1=6
然后a先自减 a=6-1=5 然后与b相乘 a*b=5*8=40
不知说明白吗?
楼主须区分优先级和自加减的情况,自加减的优先级和单目运算相同。
其次,自加减操作情况有时不同,如题所见,须特别分析。
最后,自加减的情况一般很少参与运算,比如 d=++a+a++ 不太出现似乎。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-03
a--是先乘了之后再去减,而--a是先减了再乘。。。这就是区别。。。追问

这个我知道,可是为什么a--的值为6?++a为7?

追答

因为a得知已经随着程序的进行而发生了改变。。。。是从上面承接下来的。

追问

意思是从第二个开始也就是a=6开始,a的值开始改变?

本回答被提问者采纳
第2个回答  2012-02-03
支持 龚振兴918 的回答。
回答的很完美。
这是运算符优先级的问题。
++ --在变量的前后,优先级不同的。可以在网上查阅相关资料。
第3个回答  2012-02-03
a++先运算后自加1
++a先自加1后运算
自减和自加一样

相关了解……

你可能感兴趣的内容

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