| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
学习型 ASP/PHP/ASP.NET 主机 35元/年全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
赛孚耐:软件保护加密专家身份认证令牌USB KEY虚拟主机 域名注册 主机托管 
共有 1652 人关注过本帖
标题:求教大家,简单问题,但为什么是这样的结果?(vc6.0)
收藏  推荐  打印 
默默无纹
Rank: 2
等级:注册会员
帖子:45
积分:550
注册:2008-2-12
结帖率:0/0
  问题点数:0  回复次数:12   
求教大家,简单问题,但为什么是这样的结果?(vc6.0)

很简单的程序
void main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}
但是结果为(8 7 8 8)无论是从左到右顺序求值还是从右到左顺序求值都不应该是这个结果吧?
我觉得从左到右应该是(9 8 8 9 )从右到左是(8 7 7 8),
是我的错还是编译器的原因?如果是从右到左顺序求值,为什么结果不是(8 7 7 8)而是(8 7 8 8)
请大家指点一下!

[ 本帖最后由 默默无纹 于 2008-2-24 21:04 编辑 ]
搜索更多相关主题的帖子: 简单问题  结果  求值  void  
2008-2-24 16:36
qfyzy
Rank: 3Rank: 3
来自:安徽合肥
等级:中级会员
威望:1
帖子:362
积分:3696
注册:2008-2-17
  得分:0 

没人错了,书上写的很明白,这种式子没有确定的求值顺序,完全取决于编译器
2008-2-24 17:01
默默无纹
Rank: 2
等级:注册会员
帖子:45
积分:550
注册:2008-2-12
  得分:0 
回复 2# 的帖子

谢谢了,但我不明白的是结果呀!
2008-2-24 17:14
bruin
Rank: 1
等级:新手上路
帖子:1
积分:110
注册:2007-12-1
  得分:0 

没错,C并没有规定参数之间的计算顺序
2008-2-24 17:14
默默无纹
Rank: 2
等级:注册会员
帖子:45
积分:550
注册:2008-2-12
  得分:0 

高手们指点下呀!
2008-2-24 21:08
peach5460
Rank: 3Rank: 3
来自:武汉
等级:中级会员
帖子:399
积分:4088
注册:2008-1-28
  得分:0 

以下是引用 bruin 在 2008-2-24 17:14 的发言:

没错,C并没有规定参数之间的计算顺序
貌似有顺序的..printf是从右向左的...

ps:::VC6.0的顺序是乱的...我可以举很多例子...

如果写错了...不要愤青...
欢迎交流peach5460@gmail.com
QQ Group:61505403
2008-2-24 21:08
cosdos
Rank: 6Rank: 6
来自:ShangHai
等级:金牌会员
威望:2
帖子:1629
积分:17184
注册:2007-6-19
  得分:0 

对于
-- 和 ++ 的处理,是没有标准的。
完全取决于实现

—>〉Sun〈<—
2008-2-24 21:34
lv5sky
Rank: 2
等级:注册会员
帖子:76
积分:860
注册:2007-10-5
  得分:0 
时这样

原来如此!
2008-2-24 21:49
chenyiqing23
Rank: 1
等级:新手上路
帖子:34
积分:343
注册:2007-12-27
  得分:0 
ok

printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
是从右往左开始的!!!
结果没错!!! ++i 是9 i++是8 --i是7 i--是8

printf("%d\n%d\n%d\n%d\n",(++i,i),--i,(i++,i++),i--);
你看看这是什么结果!!!这个更难了!!!
这里关系到括号运算的!!!
你遇到的问题是我以前也遇到过的!!!
加油!!!朋友!!!
2008-2-24 23:26
chenyiqing23
Rank: 1
等级:新手上路
帖子:34
积分:343
注册:2007-12-27
  得分:0 
ok

printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
是从右往左开始的!!!
结果没错!!! ++i 是9 i++是8 --i是7 i--是8

printf("%d\n%d\n%d\n%d\n",(++i,i),--i,(i++,i++),i--);
你看看这是什么结果!!!这个更难了!!!
这里关系到括号运算的!!!
你遇到的问题是我以前也遇到过的!!!
加油!!!朋友!!!
2008-2-24 23:27
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.090915 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved