Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
65 lines (52 sloc) 2.75 KB

缘起

chap3 程序控制语句应该保持简洁高效

  • 三种基本流程控制结构
    • 顺序结构:从第一条语句到最后一条语句完全按顺序来执行。
    • 选择结构:在程序执行过程当中,根据用户的输入或中间结果去选择执行若干不同的任务
    • 循环结构:如果在程序的某处,需要根据某项条件重复地执行某项任务若干次或直到满足或不满足某条件为止。

Item17:if语句应该尽量保持简洁,减少嵌套的层数

  • C89指明,最少支持15层嵌套;C99提升到127层。
  • 17-1 先处理正常情况,再处理异常情况
    • 不仅读起来符合逻辑,更重要的是,正常情况一般比异常情况发生的概率更大,避免if语句进行多次无谓的比较。
  • 17-2 避免“悬挂”的else
    • [代码]
    • else始终与同一对括号内最近的未匹配的if相结合
  • 17-3 避免在if/else语句后面添加分号“;”
  • 17-4 对深层嵌套的if语句进行重构
    • [代码]

Item18:谨慎0值比较

  • 18-1 避免布尔型与0或1进行比较
  • 18-2 整型变量应该直接与0进行比较
  • 18-3 避免浮点变量用“==”或“!=”与0进行比较
  • 18-4 指针应该用“==”或“!=”与NULL进行比较

Item19:避免使用嵌套的“?:”

  • [代码]

Item20:正确使用for循环

  • 20-1 尽量使循环控制变量的取值采用半开半闭区间写法
  • 20-2 尽量使循环体内工作量达到最小化
  • 20-3 避免在循环体内修改循环变量
  • 20-4
  • 20-5
  • 20-6

Item21:适当地使用并行代码来优化for循环

  • [代码]

Item22:谨慎使用do/while与while循环

  • 22-1 无限循环优先选用for(;;),而不是while(1)
  • 22-2 优先使用for循环替代do/while与while循环

Item23:正确地使用switch语句

  • 23-1 不要忘记在case语句的结尾添加break语句
  • 23-2 不要忘记在switch语句的结尾添加default语句
  • 23-3 不要为了使用case语句而刻意构造一个变量
  • 23-4 尽量将长的switch语句转换为嵌套的switch语句

Item24:选择合理的case语句排序方法

  • 24-1 尽量按照字母或数字顺序来排列各条case语句
  • 24-2 尽量将情况正常的case语句排在最前面
  • 24-3 尽量根据发生频率来排列各条case语句

Item25:尽量避免使用goto语句

Item26:区别continue与break语句

  • continue语句
    • 只结束本次循环,而不终止整个循环的执行。 [代码]
  • break语句
    • 结束整个循环过程,不再判断执行循环的条件是否成立。
    • 选择结构中的break; 跳出switch语句块,执行switch下面的语句
    • 循环结构中的break; 终止本层循环,继续执行该循环外的语句