一级棒(Eachfun)
一级棒 - 读书笔记 - C++ Primer - if、switch语句
RSS订阅
if、switch语句
发表时间:2006-07-21 23:53:30 关键词:C++,MFC,VC,Primer,编程,教程,读书

  本书不愧为经典书,在if这地方能避免说教,讲得绘声绘色,真叫人佩服。
  大体上if要注意的就只有else的配对问题了。如果在else前方有多个没有配对的if,那就找最近的一个配对。如果要改变这种默认的“拉郎配”,就加上花括号。
  还是引用林锐博士的一句话吧:“if、for、while、do等……不论执行语句有多少都要加{}。这样可以防止书写失误。”(《高质量C++/C编程指南》第16页)
  if语句曾有一个令我疑惑了好久的东西:“else if”究竟算什么?因为BASIC里有“ElseIf”这个关键词,而C++中所谓的“else if”是两个关健词组成的。中间插了个空格。我们都知道,C++的语句与语句之间插入若干个(包括0个)空格、TAB、回车都是一样的,那么,如果我把else后插入一个回车,不成了另一种结构的if语句了么?后来我仔细地分析一下逻辑关系,才豁然开朗:原来是BASIC的“ElseIf”干扰了我的理解。C++中用哪种方法去理解都没区别。
  都说switch是为了简化if而出现的,但是switch虽然可以简化if,却并不是任何时候都能使用。使用switch有两个先决因素:一是所有的条件都必须是编译时常量。也就是说如果要在程序运行时再决定case后的条件,那是不行的。另一个因素是只能拿出若干个整数值来比较是否相等,既不能是浮点数,也不能比较大于或小于。
  switch最容易出错的就是丢失break语句了。因为按常规思路,人们总以为两个标号之间的语句才是应该执行的。从BASIC过来的人更加痛苦,因为BASIC里不需要类似于break这样的语句来表示结束。
  我的做法是,在打程序框架时,先把case标号和break写了,其余的再去完善。即使逻辑上不需要break语句,也要写上“//break;”,这样可以提醒自己和团队的伙伴:此处并未丢失break,而是的确不需要。
  丢失default是最理直气壮的了。因为的确有许多时候并不需要default,但是我的经验是要加上default以及它后面的break,原因同上,提醒自己和伙伴我没有遗漏。

本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
相关评论
  • 我的文章是不允许一目十行地看的,
    我在文中已经提到了有时候确实不需要break,
    那我就写成://break;
    写一个被注释掉的break,与不写是两码事。
    作者:偷猫 时间:2006-07-24 14:09:47
  • 要不要break也要看程序要求.有时候不加上break可以在某条件满足的时候,同时执行两个或多个case.
    作者:walkman 时间:2006-07-24 09:40:12
1
发表评论
称呼:
QQ:
邮箱:
链接:
内容:
搜索: 百度搜索 Google搜索
Copyright©2000 - 2008 Eachfun.Com, All Rights Reserved 一级棒网络
苏ICP备05080156号
一级棒建站系统 http://www.eachfun.com 一级棒版权所有,未经许可不得商用!