C++中的逻辑控制语句包括:
- 条件判断语句
- if - else
- switch - case - default
- 循环语句
- for循环
- while循环
- do-while循环
- 跳转语句
- break
- continue
- goto
1. 条件判断语句:if-else
if-else语句,如果…则...;否则…就...;
如果if括号里面的表达式的值为真,则执行大括号里面的语句,否则执行else里面的语句;如果没有else,则什么都不执行。
if (boolean_expression) {
// 如果if括号里面的表达式的值为真,则执行该大括号( if对应的 )里的语句体
} else {
// 如果if括号里面的表达式的值为假,则执行该大括号( else对应的 )里的语句体
}
2. 条件判断语句:switch-case-default
将switch括号里面的值,和所有case指定的值,作比较;如果某个case指定的值,与switch括号里的值相等,则执行该case的语句体,直到遇到break语句,才会跳出switch-case-default代码块。如果switch括号里面的值,与所有case指定的值都不相等,则执行default语句体。
switch (expression)
{
case constant_value1:
statement(s);
break; // 可选
case constant_value2:
statement(s);
break; // 可选
default: // 可选
statement(s);
}
注意:如果,某个case的语句体执行完,想要跳出switch-case-default代码块,一定要在该case语句体内加上break语句!执行break语句,会跳出switch-case-default代码块!
3. 循环语句:for循环
for( init; condition; increment)
{
statement(s); // for循环的循环体
}
for循环分为四个部分:
(1)括号里面,第一个分号之前的语句为初始化语句,对循环变量进行初始化;在for循环里面,最开始执行的部分;
(2)括号里面,两个分号之间的语句为判断语句,只有当该语句的值为真时,才会继续执行for循环的循环体,否则,跳出for循环;
(3)括号里面,第二个分号之后的语句为更新语句,可以更新循环变量,也可以留空。
执行顺序:init ---> condition ---> statement(s) ---> increment
int a = 1;
for (int i = 0; i < 4; ++i) {
a++;
}
std::cout << a << std::endl; // 5
注意:如果,想要提前跳出for循环代码块,一定要在该for循环的循环体内加上break语句!执行break语句,会跳出for循环代码块!
4. 循环语句:while循环
init;
while (condition)
{
statement(s);
increment;
}
与for循环类似,只不过,while循环的init语句放在了while循环语句块的前面,increment语句,放在了while循环的循环体内;
执行顺序:init ---> condition ---> statement(s) ---> increment
int a = 1;
int i = 0;
while (i < 4) {
a++;
i++;
}
std::cout << a << std::endl; // 5
注意:如果,想要提前跳出while循环代码块,一定要在该while循环的循环体内加上break语句!执行break语句,会跳出while循环代码块!
5. 循环语句:do-while循环
init;
do {
statement(s);
increment;
} while (condition);
与while循环类似,init语句放在了循环语句块的前面,increment语句,放在了循环体内;
与while循环不同的是,do-while循环会先执行一次循环体,然后再执行condition语句进行判断;
注意:不要忘了while的小括号后的分号!
执行顺序:init ---> statement(s) ---> increment ---> condition ---> statement(s) ---> increment
int a = 1;
int i = 0;
do {
a++;
i++;
} while (i < 4);
std::cout << a << std::endl; // 5
在某些情景下( 例如必须要先执行一次循环体 ),do-while循环相比while循环,会更好用一些!
注意:如果,想要提前跳出do-while循环代码块,一定要在该do-while循环的循环体内加上break语句!执行break语句,会跳出do-while循环代码块!
6. 跳转语句:break语句
break语句通常应用在,需要提前跳出当前循环代码块、或者提前跳出当前switch代码块的情况下!
执行break语句后,会继续执行,当前循环代码块、或者当前switch代码块后面的语句!顺序执行!
上图中,执行break语句,会跳出该break语句所在的内层for循环,但不会跳出外层for循环,继续执行外层for循环的后面语句!
7. 跳转语句:continue语句
continue语句通常应用在,不会提前跳出循环代码块,只是会跳过本次循环的循环体内continue语句后的语句!继续下一次循环!
上图中,执行continue语句,不会跳出该continue语句所在的内层for循环,但是会跳过本次循环的循环体内continue语句后的语句!继续下一次循环!所以,会去执行 j < 3 语句!
8. 跳转语句:goto语句
goto语句,将会跳转到,被标记的语句,程序将会从被标记的语句继续顺序执行!
int a = 1
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
if (i + j == 3) {
goto finish;
}
a -= 1;
}
a += 1;
}
finish:
std::cout << a << std::endl;
return 0;
执行到goto语句,程序会跳转到finish标记的语句,从该标记语句继续顺序执行!
注意:因为goto语句太过灵活,会打乱代码执行顺序,导致代码的可读性、可维护性变差,所以,不推荐使用!