printf打印

来源:互联网 发布:java 双引号转义 编辑:程序博客网 时间:2024/05/19 13:09

平台:Ubuntu 12.04.2


#include <stdio.h>  
void main()  
{  

int i = 5;  

printf("%d %d %d %d %d %d\n", i, --i, i--,i, i--,i);  

return 0;



输出结果是:2 2 4 2 5 2

printf,从右往左运算,--i(先运算后得到结果)、i++(先得到结果后运算);
因为
1、printf函数的参数压栈顺序是从右往左依次入栈的;
2、对于i--,先由ebp寻址函数栈空间来记录中间结果,然后再给printf压栈
     对于--i,则直接压寄存器变量,寄存器经过了所有的自增操作。

0 0
原创粉丝点击