重学C++ (四) 语句

第六章 语句

1.一些看似非法的分号往往只不过是一个空语句而已:

ival = v1 = v2;; //ok

上面一共两条语句:一条表达式语句和一条空语句;

2.对于switch结构,漏写break语句是常见的错误;

3.switch求解的表达式可以非常复杂,而case标号必须是整型常量表达式;

//非法标号值
case 3.14; //非整型
case ival; //非常量

4.只能在最后一个case标号或default标号后面定义变量:避免出现代码跳过变量的定义和初始化;

5.do while语句总是以分号结束,do内部定义的变量作用域限制在while前的右花括号之前;

do
    statement
while (condition);

6.break语句用于结束最近的while,do while,for,switch语句;

7.标号标识符只能用作goto的目标,因此可以与变量名等重名,但不得与其他标号标识符重名;
goto语句和获得所转移的控制权的带标号的语句必须位于同一函数内;
goto语句不能跨变量定义跳转(如果确实需要,可将定义放到一个块语句中);

8.在try块中,一旦catch子句执行结束,程序流程立即继续执行紧随着最后一个catch子句的语句;

9.使用预处理器进行调试:

int main()
{
#ifndef NDEBUG
cerr<<"starting main"<<endl;
#endif
// ..
}

如果NDEBUG未定义,则将信息写到cerr中;
如果定义了,则跳过该段代码;

故在开发阶段,可以保持NDEBUG未定义,而在释出阶段,可以通过定义NDEBUG删除这些调试语句:

$ cc -DNDEBUG main.c

上面语句等价于在main.c开头添加 #define NDEBUG ;

assert(断言)预处理宏:只要NDEBUG未定义,assert宏就求解其后面的条件表达式,如果结果为false,则输出信息并终止程序;

通常使用assert来测试“不可能发生”的条件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值