| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:初学者疑问~花你几分钟时间
只看楼主 加入收藏
mtchenjun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-10-11
收藏
 问题点数:0 回复次数:7 
初学者疑问~花你几分钟时间
你们好,我是一名初学者,请教两个让你们笑掉大牙的小程序.可是我很不明白这其中的原因
1.main()
{
int n=1;
printf( "%d %d %d\n" ,n ,++n, n--);
}

2.main()
{
int n=1;
printf( "%d %d %d\n" ,n ,n++, n--);
}
就我自己的思路答案应该是:(1)1,2,1. (2)1,1,1.可我用编译器如实写下程序查看结果却为:(1)1,1,1. (2)1,0,1.
由其是第二题,怎么也想不明白结果中会有0这个答案.请各位老手可以给我一个详尽的解讲.在此非常感谢.
搜索更多相关主题的帖子: 疑问 时间 
2007-10-11 23:44
け澔けゑ楓ぁ
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-13
收藏
得分:0 

你搞错地方了咧,这是C#讨人论坛啊,那里面的回答可能比这里的回答更专业些咧!

2007-10-14 16:39
tdzdtdzd
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-14
收藏
得分:0 
不可能哟
2007-10-14 17:26
jameshui
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2007-10-11
收藏
得分:0 
更晕
2007-10-14 20:21
godlw
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-10-13
收藏
得分:0 
晕呼呼

2007-10-14 23:54
NS2007
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-14
收藏
得分:0 

main()
{
int n=1;
printf( "%d %d %d\n" ,n ,++n, n--);
}
这个好像编译器的执行顺序不一样。三个全是1的结果似乎是先执行了n--,在执行的++n。

2007-10-15 00:35
鸿工作室
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2007-10-14
收藏
得分:0 
执行顺序,从右到左

2007-10-15 01:00
NS2007
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-14
收藏
得分:0 

1.main()
{
int n=1;
printf( "%d %d %d\n" ,n ,++n, n--);
}

2.main()
{
int n=1;
printf( "%d %d %d\n" ,n ,n++, n--);
}
哈,我想明白了,这道题目告诉我们一件事,就是在printf()函数中,整个输出过程是要全部执行完才输出。
例如第一题,n=1时,先执行++n,则n=2,最后执行n--,则n=1,直到此时才开始执行输出,所以n全是1。

第二题,先执行n++,此时n++仍然是1,再n--,则n=1,而内存中的n++指的是0,n--是先输出在自减,所以也是1。

2007-10-15 01:05
快速回复:初学者疑问~花你几分钟时间
数据加载中...
 
   



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

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