首页 > 编程笔记 > C++笔记 阅读:1

C++ if分支语句用法详解(附带实例)

在编程时,我们经常需要根据条件来决定执行哪些代码,这就需要用到分支语句。

if 语句是 C++ 中最常见的分支语句之一,用于根据条件进行分支控制。其基本形式如下:
// condition 是需要满足的条件
if (condition) {
    // codes to be executed if condition is true
    // 条件满足后,就会执行此处花括号中的语句块
} else {
    // 条件不满足,执行这里的语句块
}
其中,condition 是一个布尔表达式,如果其值为 true,则执行 if 块中的代码;否则执行 else 块中的代码。

例如,我们可以用 if 语句来检查一个数是否为奇数:
// 定义一个整数变量 num,并赋值为 3
int num = 3;

// 使用 if 语句检查 num 是否为奇数
if (num % 2 == 1) {
    // 如果 num 除以 2 的余数等于 1,则说明它是奇数
    // 输出 num 是奇数的信息
    cout << num << " is an odd number.";
}

如果要在 condition 中使用复合条件,则需要利用逻辑运算符 && 和 || 进行逻辑运算。&& 和 || 是逻辑运算符:
例如,若希望同时满足条件 c1 和 c2,则可以这样编写:
if (c1 && c2) {
    // 当 c1、c2 同时为真时,执行这里的语句块
}

如果希望 c1 和 c2 两个条件只要有一个为真时,可以这样编写:
if (c1 || c2) {
    // 当 c1 和 c2 中至少一个为真时,执行这里的语句块
}

如果想要构造更复杂的条件,可以配合圆括号来编写(圆括号的优先级最高,类似于四则运算中的圆括号)。需要注意的是,在 C++ 的条件表达式中,不存在数学中常用的方括号([]),所有括号都用圆括号(()):
if (c1 || (c2 && c3)) {
    // 当 c1 为真,或(c2、c3)同时为真时,执行这里的语句块
} else if (c2) {
    // 当上一个条件不满足,但是满足 c2 为真时,执行这里的语句块
}

在算法竞赛中,if 语句被广泛用于控制程序的流程,例如在动态规划中,我们需要根据特定条件来更新状态值,或者在图论中,根据结点是否已访问来决定是否进一步探索等。


以下是一些 if 语句的示例程序。
【实例 1】根据年龄判断是否成年。程序代码如下:
// 定义一个整数变量 age,并赋值为 18
int age = 18;

// 使用 if 语句检查 age 是否大于或等于 18
if (age >= 18) {
    // 如果 age 大于或等于 18,则输出提示信息
    cout << "你已经成年了。" << endl;
} else {
    cout << "你还没成年。" << endl;
}

【实例 2】根据分数判断成绩等级。程序代码如下:
// 定义一个整数变量 score,并赋值为 85
int score = 85;

// 使用 if-else 语句判断分数等级
if (score >= 90) {
    // 如果分数大于或等于 90,则输出 "Grade: A"
    cout << "Grade: A" << endl;
} else if (score >= 80) {
    // 如果分数大于或等于 80 且小于 90,则输出 "Grade: B"
    cout << "Grade: B" << endl;
} else if (score >= 70) {
    // 如果分数大于或等于 70 且小于 80,则输出 "Grade: C"
    cout << "Grade: C" << endl;
} else if (score >= 60) {
    // 如果分数大于或等于 60 且小于 70,则输出 "Grade: D"
    cout << "Grade: D" << endl;
} else {
    // 如果分数小于 60,则输出 "Grade: F"
    cout << "Grade: F" << endl;
}

C++三目运算符

除 if 语句外,C++ 还提供了一种更为简洁的分支控制方式,那就是三目运算符(?:),也被称为三元运算符。它的形式如下:
condition ? expression_if_true : expression_if_false
如果 condition 为真(true),则表达式的值为 expression_if_true,否则为 expression_if_false。

例如,我们可以使用三目运算符来找出两个数中的较大值:
int a = 3, b = 4;
int max_value = a > b ? a : b;  // 返回4

请务必注意,三目运算符会返回一个值,而不是执行一条语句,同时需要保证冒号两边的值类型相同:
// 返回两个数中较大的数
int getMax(int a, int b) {
    // 以下写法是错误的,因为三目运算符会返回一个值,而不是像 if 那样执行一段语句
    // a > b ? return a : return b;

    // 以下写法也是错误的,冒号两边需要有相同的数据类型
    // return a > b ? a : "Hello";

    // 以下是正确的写法
    return a > b ? a : b;
}

三目运算符可以使代码更为简洁,增强可读性。但在某些场景下,过度使用三目运算符可能会让代码变得更加难以理解(尽可能避免嵌套使用三目运算符)。因此,我们应当谨慎使用,以防止代码变得难以阅读和维护。

相关文章