Z
ZHANK
编程在线教程C++ 教程条件判断 if-else
控制流程

条件判断 if-else

if/else if/else、三目运算符、= vs == 陷阱

条件判断 if-else

C++ 的条件判断和 C 一样,但多了 if 带初始化(C++17)和更严格的布尔语义。

学完本章你将: 掌握 if/else if/else、带初始化 if、三目运算符。


基本语法

cpp
#include <iostream>

int main() {
    int score = 85;

    if (score >= 90) {
        std::cout << "优秀\n";
    } else if (score >= 80) {
        std::cout << "良好\n";        // 输出这句
    } else if (score >= 60) {
        std::cout << "及格\n";
    } else {
        std::cout << "不及格\n";
    }

    return 0;
}

C++17 带初始化的 if

cpp
// C++17: if 语句内声明变量
if (auto it = map.find("key"); it != map.end()) {
    // it 只在 if/else 块内可见
    std::cout << "找到了:" << it->second << "\n";
} else {
    std::cout << "没找到\n";
}
// it 在这里已不可用——避免污染外部作用域

三目运算符

cpp
int a = 10, b = 20;
int max = (a > b) ? a : b;
std::cout << max << "\n";  // 20

// C++ 中三目运算符可返回左值(C 不行)
(a > b ? a : b) = 100;  // 修改 a 或 b

`=` 和 `==` 的经典陷阱

cpp
int x = 0;
// if (x = 5) { }  // ❌ 赋值,总是真
if (x == 5) { }    // ✅ 比较

// 防御技巧:常量放左边
// if (5 = x) { }  // 编译错误,立刻暴露问题