| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 371 人关注过本帖
标题:大家来看看这个程序
只看楼主 加入收藏
lizunjie
Rank: 1
等 级:新手上路
帖 子:15
专家分:2
注 册:2009-8-29
结帖率:66.67%
收藏
 问题点数:0 回复次数:3 
大家来看看这个程序
/*START*/
  #include <stdio.h>
  void foo( int i, int j)
  {
   printf( "%d, %d\n", i, j);
  }
 
  int main()
  {
   int i =0;
   foo( ++i, i++);
   printf( "%d\n", i);
   getchar();
   return 0;
  }  
/*END*/
输出结果:
2,0
2

我怎么想也想不明白,怎么会输出这个值呢?
我觉得是应该输出  1,2
                  2
请问高手到底电脑编译的时候是怎么个过程呢?

[ 本帖最后由 lizunjie 于 2009-9-11 10:01 编辑 ]
搜索更多相关主题的帖子: include return 
2009-09-11 09:53
zhjr5201314
Rank: 4
等 级:业余侠客
帖 子:63
专家分:238
注 册:2009-9-10
收藏
得分:0 
输出结果是
1,0
2
看一下i++与++i区别
         
2009-09-11 11:09
moondark
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:158
注 册:2009-9-6
收藏
得分:0 
这个函数其实跟printf("%d,%d",++i,i++);结果是一样的,
因为在printf函数里,其输出顺序是从右往左,所以它应该先计算i++,输出i=0;
然后,i自增1,再进行++i,再输出此时i的值,所以这个时候输出的就是2了,所以结果是2,0
2009-09-11 12:31
moondark
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:158
注 册:2009-9-6
收藏
得分:0 
还有,刚刚忘了说了,在谭浩强的书上说,在函数里进行++i,或i++,在不同编译器里可能不同,不知是真是假。。。
不过最好不要这样做就是了。。。
2009-09-11 12:35
快速回复:大家来看看这个程序
数据加载中...
 
   



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

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