if-else 语句
控制条件分支。
语法
if ( expression )
statement1
[else
statement2]
备注
如果 expression 的值不为零,执行 statement1 。如果选项 else 存在,如果 expression 的值为零,执行 statement2。 表达式必须是算术或指针类型,或者必须是定义明确的整型或指针类型转换的类类型。有关转换器的信息,请参见标准转换。
在两个形式的 if 语句和 expression 语句中计算,可以具有除结构以外的任何值,包括所有副作用。除非 statement 中的一个包含 break、 continue 或 goto,控件才能从 if 语句传递到项目中的下一条语句。
if...else 语句的 else 子句与在没有相应的 else 语句的同一范围的最接近的前面 if 语句相关。
为了使此示例可以明确有关 if...else 配对,取消对大括号的注释。
// if_else_statement.cpp
#include <stdio.h>
int main()
{
int x = 0;
if (x == 0)
{
printf_s("x is 0!n");
}
else
{
printf_s("x is not 0!n"); // this statement will not be executed
}
x = 1;
if (x == 0)
{
printf_s("x is 0!n"); // this statement will not be executed
}
else
{
printf_s("x is not 0!n");
}
return 0;
}
输出:
x 是 0!
x 不是 0!
switch 语句
允许根据整型表达式的值在多个代码段中进行选择。
语法
switch ( expression )
case constant-expression : statement
[default : statement]
备注
expression 必须属于整型或存在到整型的明确转换的类类型。将按照整型提升中所述的方式执行整型提升。
switch 语句体由一系列 case 标签和一个可选 default 标签组成。 case 语句中的两个常量表达式的计算结果不能为同一个值。 default 标签只能出现一次。标记语句不是语法要求,但如果它们不存在,switch 语句是无意义的。默认语句无需显示在末尾;它可以显示在 switch 语句体的任何位置。case 或 default 标签只能显示在 switch 语句内。
每个 case 标签中的 constant-expression 将转换为 expression 类型,并将与 expression 比较是否等效。控制到其 case constant-expression 与 expression 的值匹配的语句的传递。下表中显示了生成的行为。
switch 语句行为
| 条件 | 操作 |
|---|---|
| 转换后的值与提升的控制表达式的值匹配。转换后的值与提升的控制表达式的值匹配。 | 控制将转移到跟在该标签后面的语句。 |
| 没有常量与 case 标签中的常量匹配;default 标签存在。 | 控制将转移到 default 标签。 |
| 没有常量与 case 标签中的常量匹配;default 标签不存在。 | 控制将转移到 switch 语句之后的语句。 |










