仲舟の一个彩蛋——a的前后乱加

提个问题:运行下面程序,猜猜输出结果是多少?

#include<stdio.h>
int main()
{
    int a=5;
    printf("%d %d %d %d\n",a++,a,++a,a++);
    return 0;
}

然后去你的电脑运行,答案和你想的一样吗?

估计很多人都很疑惑,接下来公布答案吧, 原理很复杂,我就大致讲一下:
首先,printf是从后往前执行,比如a=1,printf("%d %d %d",a++,a++,a++);输出结果是3 2 1。
其次,我们假设a是一个容器,他装了一个数字5,那么我们来按顺序理解:
a++是返回一个值,也就是装在容器的5,输出5,然后++,a=6;
++a是返回一个容器,先++,a=7,再返回a,输出a;
a是返回一个容器,返回a,输出a;
最后a++返回一个值,输出7,然后++,a=8;
从后往前执行完毕,此时结果是 “7 a a 5”
然后再把a值代进去,结果“7 8 8 5”。
是不是amazing?😏

仲舟原创,未经允许禁止转载!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值