每日复习笔记4.24
C++复习笔记
c++ primer笔记
语句
if语句
最简单的if语句
if(condition)
statement;
其中condition部分必须用括号括起来。它可以是一个表达式,也可以是一个初始化声明。而statement部分可以是复合语句,即用花括号括起来的块语句。
- else语句
用法:
if(condition)
statement1;
else
statement2;
这里需要注意的是,每一个else都需要有且只有一个if语句想匹配。
这里就可能会出现悬垂else的情况。
if(condition1)
statement1;
if(condition2)
statement2;
else
statement3;
这种情况下,else子句既可以和第一个if匹配,也可是第二个if匹配;说明所有的if-else语句都有可能存在二义性的问题。这种就是悬垂else问题。
一般来说我们可以通过代码的缩进格式来表示else语句和哪一个if语句相匹配,不过严格来讲,这种二义性,是通过将else子句匹配给else出现之前最后出现的if子句来解决。
switch语句
- 使用switch
//统计输出的字符中元音字母的个数分别是
char ch;
int a_count = 0;
int e_count = 0;
int i_count = 0;
int o_count = 0;
int u_count = 0;
while(cin >> ch){
switch(ch){
case 'a':
++a_count;
break;
case 'e':
++e_count;
break;
case 'i':
++i_count;
break;
case 'o':
++o_count;
break;
case 'u':
++u_count;
break;
}
}
通过对圆括号内表达式的值与其后列出的关键字做比较,执行相应的case子句。这里case与它相关联的值成为case标号,case标号的值必须是常量表达式。
这里需要特别注意的是:如果表达式与其中一个case标号的值相匹配,则程序将从该标号后面的第一个语句开始依次执行各个语句,知道switch结束或者遇到了break语句为止。如果匹配失败了,则跳过整个switch语句,直接从switch语句之后的第一个语句开始执行。
switch(ch){
case 'a':
++a_count;
case 'e':
++e_count;
case 'i':
++i_count;
case 'o':
++o_count;
case 'u':
++u_count;
这是上面的程序每个case都去掉了break之后的代码,假设输入的ch是‘e’,则在匹配了case ‘e’的情况之后,后面的case也都会被执行,直到switch语句结束。
- default子句
如果所有的case都没有匹配上,而且存在default子句,则执行default子句中的程序。
switch(ch){
case 'a':
++a_count;
break;
case 'e':
++e_count;
break;
case 'i':
++i_count;
break;
case 'o':
++o_count;
break;
case 'u':
++u_count;
break;
default:
++other_count;
break;
}