| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 387 人关注过本帖
标题:C 简单的问题
只看楼主 加入收藏
六零六
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-11-21
收藏
 问题点数:0 回复次数:3 
C 简单的问题
int i=2;
printf("%d,%d,%d\n",++n,n+=2,--n);
为什么输出的结果为4,3,1;
而不是3,5,4;
2006-11-26 09:24
hzlqzh2006
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-11-22
收藏
得分:0 
你写的应该是:
int i=2;
printf("%d,%d,%d\n",++i,i+=2,--i);吧,你把i写成n了

其实,我们是不建议这样写的.在调用函数是,实参数的求值顺序,C标准库并无同统一规定.

在大多数系统中,对函数参数的求值顺序是自右向左的,上面那句就会输出:4,3,1(也就是先算--i,结果为1, 再算i+=2,结果为3, 最后算++i结果为4.所以输出4,3,1)

在有些系统中,是从左到右求值的,也就是先算++i 再算 i+=2 最后算--i,所以输出结果为3,5,4

所以,建议你如果需要输出3,5,4的话可以这样写:
int i=2,a,b,c;

a=++i;
i+=2;
b=i;
c=--i;
printf("%d,%d,%d\n",a,b,c);

2006-11-26 10:24
hermit
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-12
收藏
得分:0 

不同的编译系统有不同的结果

2006-11-26 14:33
KEVIN_LEE
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-11-3
收藏
得分:0 

呵呵,这个不说还真不知道呢.
一直以为是3,5,4.

2006-11-26 14:46
快速回复:C 简单的问题
数据加载中...
 
   



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

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