这个问题是个很基础,但是我一直不知道的问题,是同学问了之后才知道的,长知识了。
这里要注意的是,printf函数是从右向左计算,从左向右输出。
距离如下:
#include <stdio.h> main() { int i=8; printf%d, %d, %d, %d\n",i,--i,i,i--); }
此程序输出结果为:7, 7, 8, 8。原因是,printf()函数中,i++,i-- 时,i的值是在printf()函数之后才会被刷新,所以在printf()函数中,i++,i-- 对i的值暂时不产生影响,而++i、--i会有影响。
实际这里是涉及到printf的运行规则问题,是先入栈再出栈,然后再输出。具体如下。
对于printf函数中的参数,按照入栈顺序进入栈堆,然后先入栈者到栈底,后入栈者到栈顶,完成后,开始计算,由栈顶开始计算,先出栈者为printf函数中的右侧参数,计算完后接着出栈,然后计算下面的元素,这样,printf函数中的第一个元素就成为最后一个计算的元素,然后再按照由右向左的顺序将计算结果输出,所以上述例子的结果如是。
以此记录,以供学习!