i++与++i的区别

    今天一位同学问我一个问题是这样的,i=3,   (++i)+(++i)+(++i)     (i++)+(i++)+(i++);或许大家一看就明白一定是大学的C++课程,我和快的给出了答案,可是他告诉我是错的,我一下子愣住了,思考了好久也没觉得哪里出了问题,其实大家基本都知道    后置运算:k++表示先运算,后自加,前置运算:++k表示先自加,后运算 ,所以我就写了一段程序测试,结果出来我一下子傻了眼:

#include<stdio.h>
int main()
{
int i = 3, k = 3;
int a, b;
a = (i++) + (i++) + (i++);
b = (++k)+(++k) + (++k);

printf("%d %d\n", a, i);
printf("%d %d", b, k);
return 0;


}


我觉得不对,所以讲代码又copy到了devc++里面,看到结果又愣了


后来我查了资料,这是编译器不同的问题,也分析了原因,18=6+6+6,16=5+5+6,第一个好理解,第二个是因为第一个括号算出来是4,到第二个成了5,所以4就会变成5,最后一个变成6,大家还有其他理解方式吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值