linux系统下printf函数可变参数的计算顺序
2015-04-03 11:21
423 查看
#include<stdio.h> void main() { int i=5; //printf("%d,%d,\n",i,i++); //输出 6,5, //printf("%d,%d,\n",i++,i); //输出 6,6, //printf("%d,%d,\n",i,++i); //输出 6,6, //printf("%d,%d,\n",++i,i); //输出 6,6, //printf("%d,%d,\n",i++,++i); //输出 6,7, //printf("%d,%d,\n",++i,i++); //输出 7,5, //printf("%d,%d,\n",i++,i++); //输出 6,5, //printf("%d,%d,\n",++i,++i); //输出 7,7, //由此得出:可变参数是从右到左计算的,并且后自增(i++)是先将i当前值保存,然后自增,接着继续处理左边的参数。而i和i前自增是先计算。计算结束后依次入栈,因此后自增打印出来的是i在从右向左计算过程中当前的I值,而i,++i最终输出的都是I的最终值。 因此: //printf("%d,%d,%d,%d,\n",++i,i++,++i,i); //输出 8,6,8,8, //printf("%d,%d,%d,%d,\n",++i,++i,++i,++i); //输出 9,9,9,9, //printf("%d,%d,%d,%d,\n",i++,i++,i++,i++); //输出 8,7,6,5, //printf("%d,%d,%d,%d,%d,\n",i++,++i,i,++i,i++); 8,9,9,9,5, }
相关文章推荐
- C/C++函数参数的入栈顺序,计算顺序和可变参数的实现
- printf函数对参数的计算顺序,是从右往左的
- C/C++函数参数的入栈顺序,计算顺序和可变参数的实现
- c语言中printf()函数中的参数计算顺序
- printf函数对参数的计算顺序,是从右往左的
- C语言 printf函数对参数的计算顺序自加自减的讨论
- printf函数对参数的计算顺序,是从右往左的
- printf函数对参数的计算顺序,光从右往左是错误的,还要考虑前++和后++的问题
- C/C++函数参数的入栈顺序,计算顺序和可变参数的实现
- printf函数对参数的计算顺序,是从右往左的(输出是从左向右的)
- printf函数对参数的计算顺序,是从右往左的
- printf函数对参数的计算顺序,是从右往左的
- printf函数对参数的计算顺序,是从右往左的
- printf函数对参数的计算顺序,是从右往左的
- printf函数对参数的计算顺序
- 从printf()谈c/c++中可变参数函数的实现
- C语言函数入栈顺序与可变参数函数
- 使用未公开关键字在 C# 中导入外部 printf 等参数数量可变函数
- 从printf谈可变参数函数的实现
- C语言函数入栈顺序与可变参数函数