| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:代码评价
只看楼主 加入收藏
abcc
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-1-22
收藏
 问题点数:0 回复次数:5 
代码评价
据谭教师教材95页
main( )
{ int x,y;
   scanf("%d",&x);
    if(x<0) y=-1;
     else if (x==0) y=0;
    else y=1;
  printf("x=%d,y=%d\n",x,y);
}

我改成如下:
main()
{
  int x,y;
  scanf("%d",&x);
  if(x<0)y=-1;
  if(x==0)y=0;
  if(x>0) y=1;
  printf("x=%d,y=%d",x,y);}

请帮我做个代码评价最好能说的详细点儿。
搜索更多相关主题的帖子: 代码评价 int else main scanf 
2005-02-02 22:06
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

我猜想你之所以这样改,也许是因为你对 if(){} if(){} 和 if(){} else if(){} 到底有什么区别感到疑惑。 恩,我来帮你分析一下if....else的好处。 1.if...else的结构使整个程序能更加被程序员所阅读和理解。 2.if...else和if...if结构比起来能大幅度减少系统开支。怎么解释呢?让我们来看下面两个例子: void main() { int a=1; if(a==1) printf("A"); if(a==1) printf("B");

} 很显然,这个程序会输出AB两个字母,因为程序判断a==1是否成立一共判断了两次。 然而: void main() { int a=1; if(a==1) printf("A"); else if(a==1) printf("B");

} 这样写却只输出了A,为什么?因为计算机在判断if....else结构的时候,只要判断到了一个if分支成立,则其他分支将会被舍弃!!这样,系统就不用再花多余的时间去判断其他的if分支是否成立了,从而达到减少系统开支的目的。 所以,你这样改动这个程序,现在看起来还不会有什么大的问题,但是如果以后你编写大规模的程序的时候,你采用这样的结构,系统开支将会很大。 还有,你这样写存在一个很大的潜在危险,不知道你注意到了没有。 如果if(x<0) y=-1;这条语句不仅仅只有y=-1;这一句,还有x=0;即: main() { int x,y; scanf("%d",&x); if(x<0){y=-1;x=0;} if(x==0)y=0; if(x>0) y=1; printf("x=%d,y=%d",x,y);} 如果你输入的是-1,则输出的结果肯定是x=0,y=0 为什么?自己分析看看~


淘宝杜琨
2005-02-02 23:31
白瓜
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2005-1-27
收藏
得分:0 
以下是引用神vLinux飘飘在2005-2-2 23:31:59的发言: 还有,你这样写存在一个很大的潜在危险,不知道你注意到了没有。 如果if(x<0) y=-1;这条语句不仅仅只有y=-1;这一句,还有x=0;即: main() { int x,y; scanf("%d",&x); if(x<0){y=-1;x=0;} if(x==0)y=0; if(x>0) y=1; printf("x=%d,y=%d",x,y);} 如果你输入的是-1,则输出的结果肯定是x=0,y=0 为什么?自己分析看看~
你说的这个问题我也还是没有想明白, 还想让老大们讲一下,明明是 -1 ,怎么就变了 0 了啦。 哪如果用 IF……ELSE 就没有这样的结果吗( x=0,y=0)?

---------------------------------- 我不想当菜鸟 所以 我一直在努力 ----------------------------------
2005-02-03 11:34
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
是的,如果用了if...else结构后,输入-1结果就不会是x=0,y=0而是x=0,y=-1;
为什么?

为什么x变成0了?很简单,因为if(x&lt;0){y=-1;x=0;}


淘宝杜琨
2005-02-03 12:24
abcc
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-1-22
收藏
得分:0 
神vLinux飘飘老师: 谢谢你为我解答,再此祝你新春快乐,身体健康,万事如意
2005-02-03 14:29
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
哦,原来我有做老师的潜质~~~
谢谢你的祝福!

淘宝杜琨
2005-02-03 14:41
快速回复:代码评价
数据加载中...
 
   



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

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