| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1293 人关注过本帖
标题:结果???
只看楼主 加入收藏
xuexuexue
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2004-7-19
收藏
 问题点数:0 回复次数:13 
结果???

static int a=4,b=5,t;

if (a>b)

t=a;a=b;b=t;

printf ("%d,%d\n",a,b);

计算出来的结果为何为5,0?

我的思想:if(a>b)不成立执行printf ("%d,%d\n",a,b)那么结果应该是4,5

搜索更多相关主题的帖子: 结果 
2004-07-23 14:26
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
再仔细想想看——其实很简单!真的。看清楚点。

欢迎加入 MVC 技术讨论群(新群:90093426)
2004-07-23 16:14
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 

static int a=4,b=5,t; if (a>b) { t=a;a=b;b=t;} /*要得到你想要的结果,可以在上面三条语句两边加大括号*/ printf ("%d,%d\n",a,b);

以上的程序和按你说的分析思想,我想你是想得到的结果是a=4,b=5是吧? if语句在判断条件成立后,会执行后面的一条策略语句(大括号括起来的语句被当做是一条语句),您的程序中的if语句显然是条件不成立,所以执行t=a;这条语句,而a=b;以及其下的语句都不管if语句成立与否都会被执行的。 如果按照你的原意,应该在t=a;a=b;b=t;这三条语句两边各加一个配对的大括号,才能到到你想要的结果。

是不是很简单,也是疏忽所至。


欢迎加入 MVC 技术讨论群(新群:90093426)
2004-07-23 16:24
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2004-7-22
收藏
得分:0 
同意
2004-07-23 17:45
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
agree (纯属灌水,呵呵)

淘宝杜琨
2004-07-23 17:55
碎方脸
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2004-7-24
收藏
得分:0 

哦,聪明

我差点也栽进去了

2004-07-24 20:21
xuexuexue
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2004-7-19
收藏
得分:0 

我不是灌水,是不太明白。在下刚学习C语言,平时又没有人讨论所以水平很差,希望各位多多帮忙。

麻烦再解释一下为何B=0??谢谢了


C语言让我感爱到了计算机的乐趣 目前目标:程序员
2004-07-26 09:13
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

哈哈,不是说你灌水啦,问问题我们大家都是很欢迎的,毕竟这代表着你准备又要进步了嘛。我说的是我又在灌水啦,什么都没打,就打了个agree~~~~

main() { static int a=4,b=5,t=1; if (a>b) t=a; a=b; b=t; printf ("%d,%d\n",a,b); }

给你一个提示,这个是你的错误的程序,如果我把 t 赋个初值 1 给它,你想想结果会是什么,然后你就会明白了。如果还不明白,继续问咯~

问题扩展: 如果我把static去掉,再次运行程序,将会得到什么?还和上面的结果一样吗? static定义变量后,如果变量没有赋初值,那系统将会赋给它一个怎么样的初值?

呵呵,这些问题扩展自己去思考吧~

[此贴子已经被作者于2004-07-26 09:26:16编辑过]


淘宝杜琨
2004-07-26 09:25
xuexuexue
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2004-7-19
收藏
得分:0 
还是不明白,如果T=1的话那么最后B输出就是1了,但上一题T并没有赋值任何数,为什么=0??

C语言让我感爱到了计算机的乐趣 目前目标:程序员
2004-07-26 09:45
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

那就是扩展问题里面的了,

如果你是这样定义变量 int a,b; 那么系统一开始分配给a,b的就是随即的一个数

如果你+上了static int a,b; 那么系统将会给a,b自动赋予一个初值 0


淘宝杜琨
2004-07-26 10:16
快速回复:结果???
数据加载中...
 
   



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

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