C++ Primer 第五章 语句 练习和总结

本文详细介绍了C++中的语句,包括简单语句、块、条件语句(if、switch)、迭代语句(while、for、do...while)、跳转语句(break, continue, goto, return)以及try语句和异常处理。强调了块作用域、条件语句的可读性、迭代语句的执行顺序和for循环的结构。同时,给出了多个练习题供读者实践和巩固。" 121594460,11680785,Java编程:深入理解日期、数学与字符串操作及继承机制,"['Java', '开发语言', '后端', '面向对象']
摘要由CSDN通过智能技术生成

5.1 简单语句

1.在一个表达式的末尾加上分号就是表达式语句,该表达式丢弃了表达式的求值结果。

1+2;

2.一个单独的分号,是空语句,可以用占位,或者某些语句语法上需要一个语句,但是实现时,已经在其他的部分完成了操作时使用。

;;;;;

3.复合语句,复合语句就是用花括号括起来的语句和声明的序列。复合语句也叫做,一个块为一个作用域,在块中定义的变量的作用域为声明这个变量开始的地方到块结束

{
   }

注意块的结尾没有分号;如果你写上了,表示就是多了一个空语句。

  1. 空块相当于空语句
练习
5.1.

空语句就是一个分号,或者一对空的花括号,前面没有加任何的表达式。

当一个语句在语法上需要一个语句,但是在逻辑上已经该语句已经不需要任何操作时,可以用空语句

5.2

块就是一对花括号括起来的一系列语句,用到块的地方挺多的,其中一个例子就是:循环、条件等语句下,逻辑上需要执行多个操作时,可以使用块语句。

5.3
while (val <= 10 && (sum += val,++val)) {
   

}

花里胡哨,可读性下降了不少

5.2 语句作用域

块中定义的变量的访问返回是从定义该变量开始的位置,到块结束。

练习
5.4

a。

string::iterator iter;
while(iter!=s.end()){
   
//todo
}

b.

bool status;
while(status=find(word)){
   
//todo
}
if(!status){
   
//todo
}

5.2 条件语句

c++中有if和switch两种条件语句

对于if条件语句,有if()和if() else两种形式,()中的内容需要能够转化为布尔类型

因为存在悬垂else的问题,所以最好在if else的每个语句后面,都加上块作用域,这样提升了可读性,能够避免一些错误。

什么是悬垂else,因为if条件语句,可以写else,也可以不写,所以else和哪个if匹配就存在问题,C++遵循的是,和最近的那个没被匹配的if语句进行匹配。

if(a==1)
	if (b==2)
		//to
else
	//todo

这里的todo其实匹配的是后面的那个if,所以为了避免悬垂else,在if,else语句后面都加上块作用域,是一个非常好的选择。

练习
5.7

a。少写了分号
b。加上一个块作用域
c。ival定义在了if中,
d。将=用成了==

5.8

悬垂else就是else的匹配问题,C++规定else匹配最近的没有被匹配的if。

switch

switch(…){case xx;}
switch语句需要在()中输入整型表达式,同样的case标签也必须为整型常量表达式,标签不可以重复。
switch语句将()中的内容,与定义的多个case标签进行匹配,从匹配的case标签开始,向下执行所有语句,直到遇到break语句为止。

int socre =1;
int a,b,c;
a=b=c=0
switch(score){
   
	case 1:
		++a;
	case 2:
		++b;
	case 3:
		++c;
		break
	default:
		;
	break;
}

上述的语句会从++a,++b,++c一直执行到break位置,一般情况下,每一个case标签下都有一个break

default表示如果()中的内容和所有的case标签都不匹配则执行该项。

case中可以定义变量,但是如果定义的变量的初始化和使用不在同一个case标签的范围下,则会报错

int score = 1;
switch (score) {
   
case 1:
	int j = 0;
	cout << 1 << endl;
	break;
case 2:
	j = 1;
	cout << 2 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值