黑马程序员技术交流社区

标题: if-else语句需要注意的几个问题 [打印本页]

作者: goobag    时间: 2014-4-30 19:28
标题: if-else语句需要注意的几个问题

if-else语句需注意的一些问题。

1 在判断语句中判断整形变量是否等于一个常量if(i == 0)的写法不如if( 0 == i).
        因为前者如果粗心少写了一个等号,语句也是对的,只是不是我们期望的。里面就变成一条赋值语句,如果i不是只读变量,那么赋值就会成功,那么不论i是否为0,if中的语句都会被执行,而且我们也不能马上发现这错误。对后者而言,如果少写了一个等号,语法就有问题了,编译的时候就会报错,这时很容易就能发现问题出现在哪里。这种写法相对安全点。

2 如果if后面的语句只有一条,为了方便,我们经常就不写大括号。虽然这样写并没有什么错误,不过很容易引起误会。
例如:

#include "stdio.h"
int main()
{
     int x=10, y=20, t=0;
     if (x==y) t=x; x=y; y=t;
     printf("%d,%d\n",x,y);
     return 0;
}

        这是做基础测试时碰到的一道题,虽然很简单,不过对新手而言,这里是很容易出错的。就是因为在if后面没加大括号引起的误会。在if后面加上大括号还有一个好处,就是在程序后期的维护阶段可以往if语句里再添加多条语句而不会产生歧义。

3 当一个函数中出现多个if和else时,else到底和哪个if配对呢?

        这个问题对于老手来说可以很容易地区分出来,但对我们新手来说就很容易犯糊涂了。碰到这样的情况,坚持一条原则:else始终与同一个括号内最近未匹配的if语句结合。

4 if语句后面的分号。关于if-else语句的一个容易出错的地方就是与空语句连用。

如:

if(NULL != p);
        f();

        这种情况下,无论NULL是否为空,f()都会被执行,而且这样写编译时还不会报错。有时候粗心就容易在if后面加了分号。

5 先处理正常情况,然后再处理异常情况。
        if语句总是需要做判断,而正常情况一般比异常情况发生的概率更大,如果把执行概率更大的代码放到后面,也就意味着if语句将进行多次无谓的比较。另外,非常重要的一点是,把正常情况的处理放在if后面,而不要放在else后面。这也符合把正常情况的处理放在前面的要求。


作者: 世俗孤岛    时间: 2015-3-8 20:56
总结的很好
作者: lyz0925    时间: 2015-3-19 22:15
收下了,谢谢!
作者: 老树    时间: 2015-3-23 09:08
还有一些东西没总结哦
作者: GO_monster    时间: 2015-3-23 19:18
guajiguaji
作者: CHT    时间: 2015-3-23 22:28
言之有理!~
作者: 小白一号    时间: 2015-3-23 23:14
总结了C言语中的语句,以及选择结构所能控制的语句,和空语句,很好。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2