C++提供for、while和do while三种循环结构,for适用于已知循环次数,while用于条件满足时重复执行,do while确保循环体至少执行一次;C++11引入基于范围的for循环简化容器遍历,C++17结合结构化绑定进一步提升代码简洁性与可读性。

C++提供了多种循环结构,
for
while
do while
for
while
do while
解决方案
循环结构是编程中不可或缺的一部分,用于重复执行一段代码,直到满足特定条件为止。C++提供了三种主要的循环结构:
for
while
do while
for
立即学习“C++免费学习笔记(深入)”;
for
for (初始化; 条件; 更新) {
// 循环体
}例如,以下代码使用
for
#include <iostream>
int main() {
for (int i = 0; i < 10; ++i) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}for
for (;;) {
// 无限循环体
}或者将初始化和更新操作放在循环体内部,但这种做法可能会降低代码的可读性。
while
while
while (条件) {
// 循环体
}例如,以下代码使用
while
#include <iostream>
int main() {
int i = 0;
while (i < 10) {
std::cout << i << " ";
++i;
}
std::cout << std::endl;
return 0;
}与
for
while
do while
do while
while
do {
// 循环体
} while (条件);例如,以下代码使用
do while
#include <iostream>
int main() {
int i = 0;
do {
std::cout << i << " ";
++i;
} while (i < 10);
std::cout << std::endl;
return 0;
}do while
for
while
do while
| 特性 | @@######@@ 循环 | @@######@@ 循环 | @@######@@ 循环 |
|---|---|---|---|
| 适用场景 | 已知循环次数 | 循环次数未知 | 循环体至少执行一次 |
| 循环条件 | 在循环开始前评估 | 在循环开始前评估 | 在循环结束后评估 |
| 循环体执行 | 条件为真时执行 | 条件为真时执行 | 先执行一次,然后条件为真时继续执行 |
| 灵活性 | 初始化、条件和更新部分都可以省略,但分号保留 | 相对简单,更侧重于条件判断 | 保证循环体至少执行一次,更适合特定场景 |
如何选择合适的循环结构?
选择哪种循环结构取决于具体的需求。
for
while
do while
实际上,这三种循环结构在功能上是等价的,任何一种循环都可以用其他两种循环来实现。选择哪种循环结构主要取决于代码的可读性和简洁性。
副标题1
C++循环中
for
while
do while
break
continue
break
continue
break
continue
break
break
#include <iostream>
int main() {
for (int i = 0; i < 10; ++i) {
if (i == 5) {
break; // 当 i 等于 5 时,终止循环
}
std::cout << i << " ";
}
std::cout << std::endl; // 输出 0 1 2 3 4
return 0;
}正确使用
continue
continue
副标题2
如何避免C++循环中的死循环?常见的死循环原因有哪些?
死循环是指循环条件始终为真,导致循环无限执行,程序无法正常结束。避免死循环是编写健壮代码的重要一环。
常见的死循环原因包括:
#include <iostream>
int main() {
for (int i = 0; i < 10; ++i) {
if (i == 5) {
continue; // 当 i 等于 5 时,跳过本次迭代
}
std::cout << i << " ";
}
std::cout << std::endl; // 输出 0 1 2 3 4 6 7 8 9
return 0;
}break
continue
while (true)
为了避免死循环,应该:
for (;;)
副标题3
C++11及更高版本中,有哪些新的循环特性?它们如何简化代码?
C++11引入了基于范围的
#include <iostream>
int main() {
int i = 0;
while (i < 10) {
std::cout << i << " ";
// 忘记更新 i 的值,导致死循环
}
std::cout << std::endl;
return 0;
}基于范围的
#include <iostream>
int main() {
float i = 0.0f;
while (i != 1.0f) {
std::cout << i << " ";
i += 0.1f; // 浮点数精度问题可能导致 i 永远不等于 1.0f
}
std::cout << std::endl;
return 0;
}#include <iostream>
#include <cmath>
int main() {
float i = 0.0f;
while (std::abs(i - 1.0f) > 1e-6) { // 使用容差值进行比较
std::cout << i << " ";
i += 0.1f;
}
std::cout << std::endl;
return 0;
}例如,以下代码使用基于范围的
for
for
与传统的
for (声明 : 范围) {
// 循环体
}for
此外,C++17引入了结构化绑定(structured binding),可以与基于范围的
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
std::cout << number << " ";
}
std::cout << std::endl; // 输出 1 2 3 4 5
return 0;
}for
for
for
这些新的循环特性使得C++代码更加简洁、易读、易维护。它们是现代C++编程的重要组成部分。
std::pair
std::tuple
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> ages = {{"Alice", 30}, {"Bob", 25}, {"Charlie", 35}};
for (const auto& [name, age] : ages) {
std::cout << name << " is " << age << " years old." << std::endl;
}
return 0;
}以上就是C++循环结构实现 for while do while对比的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号