目录
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
下面是大多数编程语言中典型的判断结构的一般形式:

1.if语句
if 语句用于根据条件的真假执行不同的代码块。其语法如下:
if (condition) {
// 在条件为真时执行的代码块
} else {
// 在条件为假时执行的代码块
}
condition是一个表达式,当其值为真(非零)时执行if代码块,否则执行else代码块(如果有的话)。- 如果
else代码块被省略,则在条件为假时不执行任何代码。
示例:
int x = 10;
if (x > 5) {
cout << "x is greater than 5" << endl;
} else {
cout << "x is not greater than 5" << endl;
}
除了单个 if 语句外,还可以使用多个 if 语句来实现多重条件判断。也可以使用 else if 来检查多个条件,这样可以避免每个条件都被检查一遍,提高效率。
假设有一个问题,我们需要根据成绩判断学生的等级,并且按照顺序判断,A 为优秀(90-100),B 为良好(80-89),C 为及格(60-79),D 为不及格(0-59)。
如果我们使用多个 if 语句:
int score = 85;
if (score >= 90) {
cout << "A - Excellent" << endl;
}
if (score >= 80 && score < 90) {
cout << "B - Good" << endl;
}
if (score >= 60 && score < 80) {
cout << "C - Passed" << endl;
}
if (score < 60) {
cout << "D - Fail" << endl;
}
在这种情况下,即使学生得到了 95 分,仍然会被检查其他的条件(80-89 和 60-79),这样增加了不必要的计算。
但是如果使用 else if:
int score = 95;
if (score >= 90) {
cout << "A - Excellent" << endl;
} else if (score >= 80) {
cout << "B - Good" << endl;
} else if (score >= 60) {
cout << "C - Passed" << endl;
} else {
cout << "D - Fail" << endl;
}
当学生得到了 95 分时,首先检查第一个条件(90-100),因为满足条件,所以输出 "A - Excellent",然后跳出判断,不再执行后续的条件判断。这样能够提高程序的效率。
因此,使用 else if 可以在一定程度上提高程序的效率,避免不必要的条件检查。
嵌套 if 语句
可以在一个 if 或 else 代码块内部嵌套另一个 if 语句,形成嵌套条件判断。
int x = 10;
int y = 20;
if (x == 10) {
if (y == 20) {
cout << "Both x and y are equal to 10 and 20 respectively" << endl;
}
}
2.switch语句
switch 语句是一种用于处理多个不同情况的控制流语句。它允许基于一个表达式的值,从多个可能的情况中选择一个执行。
switch (expression) {
case value1:
// 当 expression 等于 value1 时执行的代码
break;
case value2:
// 当 expression 等于 value2 时执行的代码
break;
// 更多的 case 语句
default:
// 当 expression 不等于任何一个 case 时执行的代码
}
expression是一个表达式,其值将与case子句中的值进行比较。case子句中的值必须是常量表达式(整数、字符、枚举等),不能是变量或其他非常量。break关键字用于退出switch语句。如果省略break,则程序将会继续执行下一个case子句,直到遇到break或switch结束。default是可选的,用于处理expression不等于任何一个case值时的情况。它类似于else语句,是可选的默认情况。
工作原理
switch 语句的工作方式是,它首先计算 expression 的值,然后在 case 子句中逐一与其比较,直到找到匹配的值或者执行到 default 子句。
一旦匹配到一个 case 子句,将会执行对应的代码块,并且跳出 switch 语句(除非没有 break 语句,这时会继续执行下一个 case)。
如果没有找到匹配的 case 子句,且有 default 子句,则执行 default 代码块。
int option = 2;
switch (option) {
case 1:
cout << "Option 1 selected" << endl;
break;
case 2:
cout << "Option 2 selected" << endl;
break;
case 3:
cout << "Option 3 selected" << endl;
break;
default:
cout << "Invalid option" << endl;
}
在这个示例中,option 的值为 2,因此会执行第二个 case 子句中的代码,输出 "Option 2 selected"。
switch 语句是一种非常有用的控制流结构,可以用来处理多种选择情况,使代码更加简洁、清晰。但需要注意的是,switch 语句适用于离散的、有限的情况,不适合用来处理范围较广的情况。
嵌套 switch 是指在一个 switch 语句内部使用另一个 switch 语句。这种结构可以用于处理更复杂的条件情况,其中外部 switch 控制一组情况,而内部 switch 控制这些情况的子情况。
语法
嵌套 switch 的基本语法如下:
switch (expression1) {
case value1:
switch (expression2) {
case value2:
// 当 expression1 等于 value1 且 expression2 等于 value2 时执行的代码
break;
// 更多的 case 语句
default:
// 当 expression1 等于 value1 但 expression2 不等于任何一个 case 时执行的代码
}
break;
// 更多的 case 语句
default:
// 当 expression1 不等于任何一个 case 时执行的代码
}
外部 switch 控制一个表达式 expression1,而内部 switch 控制另一个表达式 expression2。根据外部 switch 中的 case 子句的值,选择执行内部 switch 中对应的 case 代码块。
示例
假设我们要根据用户选择的产品和其对应的操作执行不同的操作。我们可以使用嵌套 switch 来处理这种情况。
int product = 1;
int action = 2;
switch (product) {
case 1:
switch (action) {
case 1:
cout << "Add product 1 to cart" << endl;
break;
case 2:
cout << "Remove product 1 from cart" << endl;
break;
default:
cout << "Invalid action for product 1" << endl;
}
break;
case 2:
switch (action) {
case 1:
cout << "Add product 2 to cart" << endl;
break;
case 2:
cout << "Remove product 2 from cart" << endl;
break;
default:
cout << "Invalid action for product 2" << endl;
}
break;
default:
cout << "Invalid product" << endl;
}
在这个示例中,外部 switch 控制产品,内部 switch 控制操作。根据用户选择的产品和操作,执行不同的操作。
3.三元运算符
? : 运算符是 C++ 中的条件运算符,也称为三元条件运算符。它是 C++ 中唯一的三元运算符,因为它需要三个操作数。它的基本语法如下:
condition ? value_if_true : value_if_false;
其中,condition 是一个表达式,如果它的值为真(非零),则表达式的结果为 value_if_true,否则表达式的结果为 value_if_false。
示例
以下是一个简单的示例,说明了 ? : 运算符的使用:
int x = 10;
int y = (x > 5) ? 100 : 200;
cout << "Value of y: " << y << endl;
在这个示例中,如果 x > 5 的条件为真,则 y 的值为 100,否则 y 的值为 200。因为 x 的值是 10,因此 x > 5 的条件为真,所以 y 的值是 100。
注意事项
value_if_true和value_if_false可以是任何表达式,包括变量、函数调用、算术运算等。? :运算符的结果可以赋值给变量,也可以直接输出或用于其他表达式中。- 该运算符通常用于简单的条件判断,可以使代码更加简洁,但过度使用可能会降低代码的可读性,因此在使用时需要谨慎考虑。
总之,? : 运算符是一种简洁的条件表达式,在一行中完成条件判断和赋值的操作,常用于简单的条件赋值或输出。
249

被折叠的 条评论
为什么被折叠?



