A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© goobag 中级黑马   /  2014-4-30 19:28  /  4653 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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后面。这也符合把正常情况的处理放在前面的要求。

6 个回复

倒序浏览
总结的很好
回复 使用道具 举报
收下了,谢谢!
回复 使用道具 举报
还有一些东西没总结哦
回复 使用道具 举报
guajiguaji
回复 使用道具 举报
言之有理!~
回复 使用道具 举报
总结了C言语中的语句,以及选择结构所能控制的语句,和空语句,很好。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马