| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2658 人关注过本帖
标题:简单的小问题,涉及到使用printf输出表列中的求值顺序问题
只看楼主 加入收藏
zushuboderen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2005-12-24
收藏
 问题点数:0 回复次数:10 
简单的小问题,涉及到使用printf输出表列中的求值顺序问题

main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);
}
运行结果为
7
6
8
7
-8
822

这是怎么回事啊,一点也不符啊
不论是从左到右还是从右到左都不对啊

搜索更多相关主题的帖子: printf 求值 顺序 输出 
2006-01-26 11:51
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 

我想的话,你一定是i++,++i,--i,i--没有分清楚啊
这种结果是正常的,因为在执行是从右到左,首先看
大概的跟你说一下
++i,是先自加之后,然后再输出i的值,同样--i也是一样的
i++,是先输出i的值,然后再自加,或自减,
因为执行顺序是从右到左
所以第一次执行的是-i--,结果为-8
然后执行i++,此时i的值为7
.....,而你最后一个值为822,这个结果我也不知道是为什么,
但是你有没有注意到你参数表差一个参数项


2006-01-26 12:47
kankanba
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-10-24
收藏
得分:0 
汗,你输出了6个%d,而只有5个i。
2006-01-26 13:11
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
是这样的啊
我想问你想得到怎样的结果呢?
我也用的win-tc

2006-01-26 14:05
zushuboderen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2005-12-24
收藏
得分:0 

main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);
getch();
}
修改后如上
编译通过,可是结果和预计的不同
预计结果:
-8
7
8
6
7
可是运行结果是
7
6
8
7
-8偶晕了啊


冷静点............. 耐心点.............
2006-01-26 15:03
zushuboderen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2005-12-24
收藏
得分:0 
heihei偶知道错了,输出时是正常的左->右顺序呵呵

zhangjuan了呵呵

冷静点............. 耐心点.............
2006-01-26 15:31
ambious
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-11-29
收藏
得分:0 

这个根本就不是你们说的那个结果,无论你是用VC还是用WIN-TC编译都是一样的结果。
main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);
}
8
7
8
8
-8
-1第六个就数就随机了

这里应该这么分析,在printf里执行的顺序是从右到左,而在这里边执行的应该是类似于++i,在执行完printf后在执行里边的类似于i++的语句
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);
这里是先算-i=8
i++不算这时候i=8
i--也不算这时候i=8
--i=7这时候i值变了
++i=8这时候i值变了,是在前边的7的基础上加的1得来的。
假如你现在在后边再加上一句printf("%d\n",i);
你就会看到,输出的是7而不是8;
这是因为最后的++i 是使i为8了,
这时候就要执行上面的-i--了这时候执行的是i--不是-i--所以是7,
再执行i++得到i=8了
再执行i--得到i=7
这就是为什么不是8而是7了


一定要注意

printf输出是从左到右,而计算的时候是从右到左的。

给你们纠正个错误。希望大家回去好好的体会一下,不要想当然的得出结论了,搞技术的前辈给你们提点意见

[此贴子已经被作者于2006-11-29 10:35:36编辑过]

2006-11-29 10:31
财鸟
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-11-2
收藏
得分:0 
我觉得你该谢三楼的
2006-11-29 12:08
iimiss
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-11-28
收藏
得分:0 
想问哈7楼的
-i为什么等于8而不是-8啊?????
不明白
2006-11-29 13:58
iimiss
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-11-28
收藏
得分:0 
明白了!
才发现 c里面的运算感觉好麻烦
2006-11-29 14:06
快速回复:简单的小问题,涉及到使用printf输出表列中的求值顺序问题
数据加载中...
 
   



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

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