关于c语言自加自减的分析

首先,这个结果和编译器对于加法运算的结合方式是有关系的,

这里就分析比较常见的右结合的编译器,也就是对于从右向左

进行加法运算的编译器。如果是左结合编译器,结果就不一样了。不论从左向右还是从右向左,处理两次++就要处理+法。

先从左向右分析下面的:
int i=3 ,k  

(1) k=(++i)+(++i)+(++i);

(2) k=(++i)+(i++)+(++i);

(3) k=(i++)+(++i)+(++i);

(4) k=(++i)+(++i)+(i++);


(1)int i=3;k=(++i)+(++i)+(++i);
  i=3
,//i的初值为3
 k=(++i)+(++i)+(++i);

先从左向右处理:++i加上++i,处理结果再加上++i
++i //
先进行++处理,i的值为4,再将i代入
++i //
先进行++处理,i的值为5,再将i代入
所以在执行两次++后,再处理加法,++i加上++i结果为5+5=10

最右边的++i //先进行++处理,i的值为6,再将i代入
所以表达式运算过程中,i的值变为6,最后进行加法运算:6+10=16


(2)先从左向右处理:++i加上i++,处理结果再加上++i
++i //
先进行++处理,i的值为4,再将i代入
i++//
i的值不变,再处理加法,++i加上i++结果为4+4=8

最右边的++i //先进行++处理,i的值为5,再将i代入
所以表达式运算过程中,最后进行加法运算:8+5=13;

(3) k=(i++)+(++i)+(++i);

先从左向右处理:i++加上++i,处理结果再加上++i,
i++ //
先进行++处理,i的值为3,再将i代入
++i//
i的值变为4,再处理加法,i++加上++i结果为4+4=8

最右边的++i //先进行++处理,i的值为5,再将i代入
所以表达式运算过程中,最后进行加法运算:8+5=13;


(4) k=(++i)+(++i)+(i++);

先从左向右处理:++i加上++i,处理结果再加上i++,
++i //
先进行++处理,i的值为4,再将i代入
++i//
i的值变为5,再处理加法,++i加上++i结果为5+5=10;

最右边的i++//先进行++处理,i的值为5,再将i代入
所以表达式运算过程中,最后进行加法运算:8+5=13;


自右向左分析:

(1)int i=3;k=(++i)+(++i)+(++i);
  i=3
,//i的初值为3
 k=(++i)+(++i)+(++i);

先从右向左处理:++i加上++i,处理结果再加上++i
++i //
先进行++处理,i的值为4,再将i代入
++i //
先进行++处理,i的值为5,再将i代入
所以在执行两次++后,再处理加法,++i加上++i结果为5+5=10

最左边的++i //先进行++处理,i的值为6,再将i代入
所以表达式运算过程中,i的值变为6,最后进行加法运算:6+10=16

(2)先从右向左处理:++i加上i++,处理结果再加上++i
i++ //
先进行++处理,i的值不变3,再将i代入
++i//
i的值变为4,再处理加法,i++加上++i结果为4+4=8

最左边的++i //先进行++处理,i的值为5,再将i代入
所以表达式运算过程中,最后进行加法运算:8+5=13;

3) k=(i++)+(++i)+(++i);

先从右向左处理:++i加上++i,处理结果再加上i++,
++i //
先进行++处理,i的值为4,再将i代入
++i//
i的值变为5,再处理加法,++i加上++i结果为5+5=10

最左边的i++ //先进行++处理,i的值不变5,再将i代入
所以表达式运算过程中,最后进行加法运算:10+5=15;

(4) k=(++i)+(++i)+(i++);

先从处理:i++加上++i,处理结果再加上++i,
i++//
先进行++处理,i的值不变3,再将i代入
++i//
i的值变为4,再处理加法,i++加上++i结果为4+4=8;

最左边的++i//先进行++处理,i的值为5,再将i代入
所以表达式运算过程中,最后进行加法运算:8+5=13;













  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值