读书人

C语言诡谲的printf函数

发布时间: 2012-11-16 14:12:14 作者: rapoo

C语言诡异的printf函数
为什么下面的这两条语句的输出结果是这样?
int i=1;
printf("%d, %d, %d \n",i++,i++,++i);

为什么输出结果是3,2,4????????????????

[解决办法]
这样的代码完全没有意义,看编译器的,而且这样有歧义的代码是完全不能使用的。
[解决办法]
++i;
tmp1=i++;
tmp2=i++;
printf("...",tmp2, tmp1, i);

先从右往左计算参数值, 再从右往左压栈.
++i 先计算,后(把变量)压栈
i++ 先压栈,后计算(所以要用临时变量保存计算前的值 以便压栈用)
[解决办法]
这个和C无关,只是和编译器的具体实现相关的。无论什么时候,都不要写这种东西,除非想研究编译器
[解决办法]
楼主:你的这个问题跟printf函数无关。

读书人网 >C++

热点推荐