关于自增自减运算符在C++中

机器是没脾气的,它只能按规定好的东西运行。至于别的编绎环境不了解,VC++6.0反正是这样的了。
int a(2),b ;
b=(++a)*(++a)*(++a)+(a++)*((a--)*(--a)); 。。。。。。式一
这个式子相当于:
        b=(++a)*(++a)*(++a)+a*(a*(--a)); 。。。。。       式二
        a++;a--;    
 是的,所有后自增、后自减都在算出整个式子后再算;
至于前自增、前自减嘛,是这样的:
   b=(++a* 1 ++a )* 2 (++a )+ 3 a * 4 (a* 5 (--a) );。。。。。式二
把自增自减符号不写出来就是这样的:
b=(a* 1 a)* 2 a+ 3 a* 4 (a* 5 a);。。。。。。式三
a的值依次为4,4,5,4,4,4;于是b=(4*4)*5+4*(4*4)=144;
1乘号 这里是a*a,所以要先把两个++算了再乘,也就是两个a都是4了;
2乘号 这里是(前面的结果)*a,所以这个a的++要先算后乘,所以这个a 是5;
3加号 这里是(前面的结果)+(后面的结果),这里还未计算,所以这个加号等着看吧;
4乘号 a*(后面的结果),所以还是先算括号里的了;也还未计算,(不到乘号算的时候这个a的值就未定);
5乘号 是a*a,所以要把后面那个a的--先算了,再乘,于是这两个a都是4;
再回来算4乘号 ,这时是a*(),而a的值还是4所以是4*();
最后3加号 (前面的结果)+(后面的结果);
总之,每个a都是在它被算术运算符计算前才确定它的值的,它前面的自增、自减才会被运算。也就是说一个算术运算符两边的a的值肯定是一样的。
所以只需要三步了:
1,把后自增、自减全部抛到整个式子最后面;(从式一到式二)
2,把前自增、前自减都记在别的地方,或直接对照式二;(从式二到式三)
3,在式三中按数学上的运算顺序算就行了,当计算中要用到a的值就把它前面的++或--算了(如果同时要用两个a一定要先把两个的++或--都算了)再计算。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值