目录
1.if语句
嵌套 if 语句
2.switch语句
工作原理
语法
示例
3.三元运算符
示例
注意事项
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
下面是大多数编程语言中典型的判断结构的一般形式:
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
可以是任何表达式,包括变量、函数调用、算术运算等。? :
运算符的结果可以赋值给变量,也可以直接输出或用于其他表达式中。- 该运算符通常用于简单的条件判断,可以使代码更加简洁,但过度使用可能会降低代码的可读性,因此在使用时需要谨慎考虑。
总之,? :
运算符是一种简洁的条件表达式,在一行中完成条件判断和赋值的操作,常用于简单的条件赋值或输出。