第五章 语句

本文分享了C++ Primer中关于简单语句(空语句和空块)、条件语句(switch用法与变量作用域)、迭代和跳转语句,以及try-catch异常处理的基本概念和最佳实践。特别强调了变量声明与作用域在switch中的注意事项。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


介绍

C++Primer第五章学习心得


一、简单语句

空语句与空块:空语句即一个单独的“ ; ”,而空块常见于wihile和for循环

while(cin>>s&&s!=sought);
while(cin>>s&&s!=sought){}

上述两种写法等价

二、条件语句、迭代语句、跳转语句

switch语句中,允许多组公用一个操作,下面两种写法都可以

switch(ch){
	case 'a':
	case 'e':
	case 'i':
	case 'o':
	case 'u':
		++cnt;
		break;	
}

switch(ch){
	case 'a': case 'e': case 'i': case 'o': case 'u':
		++cnt;
		break;	
}

另外,default最好加上,哪怕什么都不做,但需注意如果switch以一个空的default作为结束,必须跟上一条空语句或者空块。

switch内部最好不要声明并初始化变量,可以仅声明,如果需要初始化务必在语句块中,确保其它case在作用域之外。个人理解是声明由编译器处理,但初始化运行时才进行,所以在switch内初始化变量时编译器认为有跳过该初始化语句风险,因此无法编译通过。加上作用域后,确保该变量只在作用域内存在,不会有跳过风险,因此可以通过。

case true:
	string file_name;//错误,因为string对象内初始化
	int ival = 0;//错误,显式初始化
	int jval;//正确
	break;
case false:
	jval = next_num();//正确,已经声明
	file_name = name;//错误
//改正
case true:
	{
		string file_name;//正确
		file_name = name;
		break;
	}

三、try语句和异常处理

异常处理包括:throw表达式异常检测和try语句块异常处理

throw runtime_error("字符串");

try{
	program-statements
} catch(expression-declaration){
	handler-statements
}catch(expression-declaration){
	handler-statements
}

标准异常:
exception头文件定义了最通用的异常类exception,只报告异常发生
stdexcept头文件定义了几种常见的异常类(exception、runtime_error、range_error等),需要用字符串初始化,提供what()成员函数,输出错误信息
new头文件定义了bad_alloc异常
type_info头文件定义了bad_cast异常


总结

switch语句中变量声明和作用域值得注意。异常处理没怎么实际接触,仅做记录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值