C++学习第七弹:判断

youziawa 发布于 2025-09-12 50 次阅读


有时候,我们希望程序会根据条件的不同执行不同的操作,此时就要请出我们的判断语句了,C++中常用的判断语句有 if 语句和 switch 语句,下面将会分别介绍。

判断语句

if 语句和 if...else 语句:

C++ 中 if 语句的语法:

if(boolean_expression)
{
   // 如果布尔表达式为真将执行的语句
}

如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。

ok也是很浅显易懂,但是如果我们想让布尔表达式为假时执行另一个语句怎么办呢?答案就是使用 else。

C++ 中 if...else 语句的语法:

if(boolean_expression)
{
   // 如果布尔表达式为真将执行的语句
}
else
{
   // 如果布尔表达式为假将执行的语句
}

当然我们也可以判断更多条件,这时候可以使用 else if。

C++ 中 if...else 语句的语法:

if(boolean_expression 1)
{
   // 当布尔表达式 1 为真时执行
}
else if( boolean_expression 2)
{
   // 当布尔表达式 2 为真时执行
}
else if( boolean_expression 3)
{
   // 当布尔表达式 3 为真时执行
}
else 
{
   // 当上面条件都不为真时执行
}

但是,当使用 if...else if...else 语句时,以下几点需要注意:

  • 一个 if 后可跟零个或一个 else,else 必须在所有 else if 之后。
  • 一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。
  • 一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。

同时,if 语句和 if...else 语句也可以进行嵌套,不过多赘述。

switch 语句:

当我们需要判断很多条件时,除了连续的 if...else if...else 语句之外,还可以使用 switch 语句,他有以下几个好处:

  • 执行效率更高
  • 代码结构更清晰
  • 类型安全限制

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

以下是C++ 中 switch 语句的语法:

switch(expression){
    case constant-expression  :
       statement(s);
       break; // 可选的(最好加)
    case constant-expression  :
       statement(s);
       break; // 可选的(最好加)
  
    // 您可以有任意数量的 case 语句
    default : // 可选的(最好加)
       statement(s);
}

在使用过程中,最好遵循以下的建议:

  1. 必加break:除非刻意实现fall-through(贯穿)逻辑(需注释说明)
  2. 善用default:处理未预见值(即使你认为不会出现)
  3. 枚举替代魔数case Color::Red 比 case 1 更安全,同时注意浮点数和字符串类型是不可行的。
  4. 性能敏感场景:优先选择switch(如解析器、状态机)
  5. 复杂条件表达式:仍用if-else(如 if (x>0 && y<0)

同样地,switch也支持嵌套。但是我个人觉得这样做会非常难读...

? : 运算符

条件运算符 ? :,可以用来替代 if...else 语句。它的一般形式如下:

Exp1 ? Exp2 : Exp3;

其中,Exp1、Exp2 和 Exp3 是表达式。
? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。

虽然在某些情况下使用 ?: 运算符确实会简化代码,但是这玩意的可读性简直是灾难,尤其是在嵌套的情况下,能别用就别用了吧...