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);}
请帮我做个代码评价最好能说的详细点儿。
----------------解决方案--------------------------------------------------------
我猜想你之所以这样改,也许是因为你对 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 为什么?自己分析看看~
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
是的,如果用了if...else结构后,输入-1结果就不会是x=0,y=0而是x=0,y=-1;
为什么?
为什么x变成0了?很简单,因为if(x<0){y=-1;x=0;}
----------------解决方案--------------------------------------------------------
神vLinux飘飘老师: 谢谢你为我解答,再此祝你新春快乐,身体健康,万事如意
----------------解决方案--------------------------------------------------------
哦,原来我有做老师的潜质~~~
谢谢你的祝福!
----------------解决方案--------------------------------------------------------