提个问题:运行下面程序,猜猜输出结果是多少?
#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?😏
仲舟原创,未经允许禁止转载!