码迷,mamicode.com
首页 > 其他好文 > 详细

printf的执行顺序

时间:2017-08-21 18:52:40      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:bing   logs   运算符   str   blog   details   关于   vc++6.0   自增   

printf()函数的参数,在printf()函数读取时是从左往右读取的,然后将读取到的参数放到栈里面去,

最后读取到的就放在栈顶,处理参数的时候是从栈顶开始的,所以是从右边开始处理的.
                                  --printf()函数的特点.

所以printf的执行顺序是从 从右到左进行运算


注意:我们在写代码时,尽量避免无确定意义的表达式出现,因为不同的编译器,可能会采用不同的理解方式.


附上一个例子:

#include<stdio.h>   
void main()   
{   
    int i=2;   
    printf("%d,%d,%d,%d,\n",i++,++i,i,i++);   
    printf("%d\n",i);   
}   

首先,应该说明的是在不同的编译环境中结果是不一样的。 

关于本段代码在VC++6.0中的规则如下: 
1、printf函数的执行顺序是由右到左的 
2、前自增运算符(++i)先加1,再使用i,此时i已经加了1; 
3、后自增运算符(i++)先使用i,再加1,***注意这里是关键所在,VC++6.0后自增运算是要在整条语句结束以后才自加1的!

所以: 
printf("%d,%d,%d,%d,\n",i++,++i,i,i++); 
从右往左运算: 
i++得到2(i=2,后加1在整条语句执行完才进行,这里先记下) 
i还是2 (i=2,原因见上一行) 
++i得到3(i=3,先加1,后使用) 
i++得到3(i=3,后加1在整条语句执行完才进行,这里先记下) 
所以输出结果为:3,3,2,2 
然后计算刚才的两次后自增运算后,i=5 

printf("%d\n",i); 
所以,结果是5

 

参考链接:http://blog.csdn.net/bingxuewujian/article/details/6728396

printf的执行顺序

标签:bing   logs   运算符   str   blog   details   关于   vc++6.0   自增   

原文地址:http://www.cnblogs.com/tanrong/p/7405919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!