《c++ primer》学习笔记 第六章 语句

《c++ primer》学习笔记 第六章 语句
注:此次为重读c++ primer,因而主要记录本人易遗忘且相对含糊的知识点,此系列只是个人笔记,读者请勿照搬,建议阅读原书为最佳。


C++中常用的语句有if、switch、while、do...while、for、break、continue、goto、try...catch.


1. if语句
if语句相对较为简单,但是需要注意悬垂else的问题:
if(a <= b)
if(a == b)
cout<<"a==b"<<endl;
else
cout<<"a>b"<<endl;
在上述语句中,本意else是外层if的分支,然后事与愿违,当运行时,我们会发现,这个else是内层if的分支。
请记住:else语句总是与其最近的if相配对!上述语句的改写应该为:
if(a<b)
cout<<"a<b"<<endl;
else if(a == b)
cout<<"a=b"<<endl;
else
cout<<"a>b"<<endl;


2 switch语句
switch(ch)
{
case 0: statement; break;
case 1: statement1; break;
....
default: statement; break;
}
在switch语句中,需要注意的是case标号(ch)必须是整型常量表达式!
当需要在switch语句中定义变量时,只能在最后的一个case或default域中定义。如果使用{},则可在任意case中定义变量。


3 while语句
while(condition)
statement;


4 do...while语句
do{
statement;
}while(condition);
do...while与while语句的位移区别是,while可以一次都不执行,而do...while必须执行一次。


5 for语句
for(init-statement; condition; expression)
statement;
在init-statement中可以定义相同类型的多个变量,而expression中可用逗号操作符。
死循环的两种常见表达: while(true){} for(;;){}


6 break、continue语句
break语句用来跳出整个循环,而continue只用来提出当次迭代循环。


7 goto语句
请尽量避免使用goto!


8 try...catch
C++中的异常处理。

使用预处理器进行调试
程序所包含的调试代码只在开发过程中执行,当程序发布时,将调试代码关闭。如:
#ifndef NDEBUG
cerr<<"...............";
#endif
上述cerr语句只在NDEBUG没有定义的情况下才会执行。如果NDEBUG已定义,那么程序会跳过#ifndef和#endif之间的部分机修执行。
此外,预处理器还定义了其余四种常量:
__FILE__ 文件名
__LINE__ 当前行号
__TIME__ 文件被编译的时间
__DATE__ 文件被编译的日期
如: cerr<<__FILE__<<__LINE__<<endl;


另外一种方式是使用NDEBUG预处理变量及assert预处理宏。需要包含cassert头文件。
assert(expr)
NDEBUG未定义的前提下,expr为false,assert输出信息且终止程序。如果expr为true,assert不做任何操作。
程序的异常处理时用来预控程序预期要发生的错误,而assert是来测试“不可能发生”的条件。
当程序定义了NDEBUG宏发布后,assert就是去作用,因而也不会有运行时负载。因此,assert宏只用来做DEBUG用。


















  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值