标题:printf()输出到底是怎么回事。
只看楼主
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:5 
printf是从右往左执行的。。。

三十年河东,三十年河西,莫欺少年穷!
2013-04-22 19:56
qq819073730
Rank: 2
等 级:论坛游民
帖 子:50
专家分:10
注 册:2013-1-6
得分:0 
回复 7楼 鈴蘭
哈哈、谢谢。我明白了。
2013-04-22 20:01
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
得分:0 
回复 楼主 qq819073730
应该是printf语句中++,--操作符在变量后面时不会被执行,如
i = 8;
printf("%d , %d" , i++ , i--);
在执行时从右往左执行,先执行i--,
本来理解应该是:执行这个操作是先输出i,再执行i=i-1;但貌似实际是执行完输出后就不再执行i= i-1;
但++i和--i不同,比如++i,是先i = i+1; 然后输出i;必须要执行了i = i+1;才能输出i;

练就一身本领,只为笑傲江湖!
2013-04-22 20:02
qq819073730
Rank: 2
等 级:论坛游民
帖 子:50
专家分:10
注 册:2013-1-6
得分:0 
回复 13楼 笑傲
谢谢。
2013-04-22 20:14
w716169470
Rank: 2
等 级:论坛游民
帖 子:51
专家分:25
注 册:2013-4-18
得分:0 
函数调用的时候复值得顺序是从右向左的,也就是先执行-i--,然后-i++,i--,i++,--i,++i。
所以应该输出的是-8,7,8,8,-8,-8.
2013-04-23 20:22
lxsjzbd
Rank: 4
来 自:河北省
等 级:业余侠客
帖 子:97
专家分:258
注 册:2012-3-31
得分:0 
讨论半天,没意义啊
2013-04-23 20:55
zuojian168
Rank: 2
等 级:论坛游民
帖 子:16
专家分:27
注 册:2013-3-20
得分:0 
数字前有负号的优先级最高,i++是先使用i在++,++i是先把i+1在使用i
2013-04-24 14:56
qq23826868
Rank: 2
等 级:论坛游民
帖 子:57
专家分:94
注 册:2013-4-7
得分:0 
以下是引用pengyancai在2013-4-22 19:27:15的发言:

是因为printf()函数的原因,因为如果参数列表包括多个实参,那么对实参的求值的顺序并不确定的,有的系统按自左至右顺序求实参的值,有的自右至左。
所以建议楼主可以定义六个变量输出。
楼上说的对。如果参数列表包括多个实参,在没定义之前对实参求值的顺序并不能确定,有的是按左到右,有的是按右向左。

建议在使用多个实参之前,先定义。

#include "stdio.h"
void main()
{
   
    int x=8,y=8,z=8,a=8,b=8,c=8;
    printf("%d,%d,%d,%d,%d,%d",++x,--y,z++,a--,-b++,-c--);
}
//9 7 8 8 -8 -8
2013-04-24 15:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405155-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.099210 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved