跳转到内容

C++ 循环控制

来自代码酷

C++循环控制[编辑 | 编辑源代码]

循环控制是C++编程中用于重复执行代码块的核心结构,它允许开发者高效处理重复性任务。本章节将详细介绍C++中的三种主要循环结构:for循环while循环do-while循环,以及控制循环执行的breakcontinue语句。

循环类型[编辑 | 编辑源代码]

for循环[编辑 | 编辑源代码]

for循环是当迭代次数已知时的首选结构,其语法包含初始化、条件和迭代三部分:

// 打印数字1到5
for (int i = 1; i <= 5; i++) {
    std::cout << i << " ";
}
// 输出:1 2 3 4 5

执行流程:

flowchart LR A[初始化] --> B{条件检查} B -- true --> C[执行循环体] C --> D[迭代语句] D --> B B -- false --> E[退出循环]

while循环[编辑 | 编辑源代码]

循环次数未知终止条件明确时使用:

// 计算数字位数
int num = 1234, digits = 0;
while (num != 0) {
    num /= 10;
    digits++;
}
std::cout << digits;  // 输出:4

do-while循环[编辑 | 编辑源代码]

至少执行一次循环体,适合必须先执行后判断的场景:

// 用户输入验证
int input;
do {
    std::cout << "输入1-100间的数字: ";
    std::cin >> input;
} while (input < 1 || input > 100);

循环控制语句[编辑 | 编辑源代码]

语句 作用 示例
break 立即终止当前循环 在找到目标值时退出搜索循环
continue 跳过当前迭代 跳过偶数处理奇数
// 查找第一个3的倍数
for (int i = 1; i <= 10; i++) {
    if (i % 3 == 0) {
        std::cout << "找到: " << i;
        break;  // 终止循环
    }
}

嵌套循环[编辑 | 编辑源代码]

循环可以多层嵌套,常用于处理多维数据结构:

// 打印乘法表
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        std::cout << j << "×" << i << "=" << i*j << "\t";
    }
    std::cout << "\n";
}

性能优化[编辑 | 编辑源代码]

考虑以下数学级数求和优化对比:

i=1ni=n(n+1)2

// 低效实现 O(n)
int sum = 0;
for (int i = 1; i <= n; i++) {
    sum += i;
}

// 高效实现 O(1)
int sum = n * (n + 1) / 2;

实际应用案例[编辑 | 编辑源代码]

游戏开发中的主循环是典型应用:

bool gameRunning = true;
while (gameRunning) {
    processInput();
    updateGameState();
    renderGraphics();
    
    if (playerHealth <= 0) {
        gameRunning = false;
    }
}

常见错误[编辑 | 编辑源代码]

  • 无限循环:忘记更新循环变量
  // 错误示例
  while (true) {
      std::cout << "无限循环!";
      // 缺少终止条件
  }
  • 作用域问题:循环变量在外部不可访问
  for (int i = 0; i < 10; i++) { /*...*/ }
  std::cout << i;  // 错误!i未定义

最佳实践[编辑 | 编辑源代码]

1. 优先选择最能表达意图的循环结构 2. 避免超过3层的嵌套循环 3. 对性能敏感代码考虑循环展开 4. 使用constexpr在编译期计算已知循环

通过掌握这些循环控制技术,您将能够处理C++中绝大多数需要重复执行的场景。