C++ While 和 For 循环:流程控制全解析

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 本文介绍了C++中的`switch`语句和循环结构。`switch`语句根据表达式的值执行匹配的代码块,可以使用`break`终止执行并跳出`switch`。`default`关键字用于处理没有匹配`case`的情况。接着,文章讲述了三种类型的循环:`while`循环在条件满足时执行代码,`do/while`至少执行一次代码再检查条件,`for`循环适用于已知循环次数的情况。`for`循环包含初始化、条件和递增三个部分。此外,还提到了嵌套循环和C++11引入的`foreach`循环,用于遍历数组元素。最后,鼓励读者关注微信公众号`Let us Coding`获取更多内容。

C++ Switch 语句

使用 switch 语句选择要执行的多个代码块之一。

语法

switch(expression) {
   
  case x:
    // 代码块
    break;
  case y:
    // 代码块
    break;
  default:
    // 代码块
}

它的工作原理如下:

  • switch 表达式被评估一次
  • 表达式的值与每个 case 的值进行比较
  • 如果找到匹配项,则执行关联的代码块
  • breakdefault 关键字是可选的

下面的示例使用星期几的数字来计算星期几的名称:

示例

int day = 4;
switch (day) {
   
  case 1:
    cout << "Monday";
    break;
  case 2:
    cout << "Tuesday";
    break;
  case 3:
    cout << "Wednesday";
    break;
  case 4:
    cout << "Thursday";
    break;
  case 5:
    cout << "Friday";
    break;
  case 6:
    cout << "Saturday";
    break;
  case 7:
    cout << "Sunday";
    break;
}
// 输出 "Thursday"(星期四,对应 day 为 4)

break 关键字

当 C++ 遇到 break 关键字时,它会跳出 switch 块。这将停止更多代码和 case 测试的执行。

当找到匹配项并完成工作时,是时候休息一下了。不需要进行更多的测试。

break 可以节省大量的执行时间,因为它“忽略”了 switch 块中其余代码的执行。

default 关键字

default 关键字指定如果没有 case 匹配时要运行的一些代码。

C++ While 循环

循环可以在达到指定条件时执行一段代码块。

循环非常方便,因为它们节省时间,减少错误,并且使代码更易读。

C++ While 循环

while 循环通过一个指定条件为 true 时循环执行代码块:

语法

while (condition) {
   
  // 要执行的代码块
}

在下面的示例中,只要变量(i)小于 5,循环中的代码就会一遍又一遍地运行:

示例

int i = 0;
while (i < 5) {
   
  cout << i << "\n";
  i++;
}

注意:不要忘记增加条件中使用的变量,否则循环将永远不会结束!

C++ Do/While 循环

do/while 循环是 while 循环的变体。这个循环会在检查条件是否为 true 之前执行一次代码块,然后只要条件为 true,就会重复执行循环。

语法

do {
   
  // 要执行的代码块
} while (condition);

下面的示例使用了 do/while 循环。即使条件为 false,代码块也会至少执行一次,因为在测试条件之前会执行代码块:

示例

int i = 0;
do {
   
  cout << i << "\n";
  i++;
} while (i < 5);

C++ For 循环

当你确切知道你要循环执行一段代码的次数时,使用 for 循环而不是 while 循环:

语法

for (语句 1; 语句 2; 语句 3) {
   
  // 要执行的代码块
}
  • 语句 1 在执行代码块之前执行一次。
  • 语句 2 定义了执行代码块的条件。
  • 语句 3 在代码块执行后执行(每次)。

下面的示例将打印数字 0 到 4:

示例

for (int i = 0; i < 5; i++) {
   
  cout << i << "\n";
}

示例解释

  • 语句 1 在循环开始前设置一个变量(int i = 0)。
  • 语句 2 定义了循环运行的条件(i 必须小于 5)。如果条件为 true,则循环将重新开始,如果为 false,则循环将结束。
  • 语句 3 每次代码块执行后增加一个值(i++)。

另一个示例

此示例将只打印 0 到 10 之间的偶数值:

for (int i = 0; i <= 10; i = i + 2) {
   
  cout << i << "\n";
}

嵌套循环

还可以在另一个循环中放置一个循环。这被称为嵌套循环。

“内部循环”将在“外部循环”的每次迭代中执行一次:

// 外部循环
for (int i = 1; i <= 2; ++i) {
   
  cout << "外部:" << i << "\n"; // 执行 2 次

  // 内部循环
  for (int j = 1; j <= 3; ++j) {
   
    cout << " 内部:" << j << "\n"; // 执行 6 次(2 * 3)
  }
}

foreach 循环

还有一个“foreach 循环”(在 C++ 版本 11(2011)中引入),它专门用于遍历数组(或其他数据集)中的元素:

语法

for (类型 变量名 : 数组名) {
   
  // 要执行的代码块
}

以下示例使用“foreach 循环”输出数组中的所有元素:

示例

int myNumbers[5] = {
   10, 20, 30, 40, 50};
for (int i : myNumbers) {
   
  cout << i << "\n";
}

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

相关文章
|
3月前
|
安全 编译器 程序员
【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
64 2
|
5天前
|
存储 算法 安全
基于红黑树的局域网上网行为控制C++ 算法解析
在当今网络环境中,局域网上网行为控制对企业和学校至关重要。本文探讨了一种基于红黑树数据结构的高效算法,用于管理用户的上网行为,如IP地址、上网时长、访问网站类别和流量使用情况。通过红黑树的自平衡特性,确保了高效的查找、插入和删除操作。文中提供了C++代码示例,展示了如何实现该算法,并强调其在网络管理中的应用价值。
|
2月前
|
自然语言处理 编译器 Linux
|
2月前
|
设计模式 安全 数据库连接
【C++11】包装器:深入解析与实现技巧
本文深入探讨了C++中包装器的定义、实现方式及其应用。包装器通过封装底层细节,提供更简洁、易用的接口,常用于资源管理、接口封装和类型安全。文章详细介绍了使用RAII、智能指针、模板等技术实现包装器的方法,并通过多个案例分析展示了其在实际开发中的应用。最后,讨论了性能优化策略,帮助开发者编写高效、可靠的C++代码。
41 2
|
19天前
|
安全 编译器 C++
C++ `noexcept` 关键字的深入解析
`noexcept` 关键字在 C++ 中用于指示函数不会抛出异常,有助于编译器优化和提高程序的可靠性。它可以减少代码大小、提高执行效率,并增强程序的稳定性和可预测性。`noexcept` 还可以影响函数重载和模板特化的决策。使用时需谨慎,确保函数确实不会抛出异常,否则可能导致程序崩溃。通过合理使用 `noexcept`,开发者可以编写出更高效、更可靠的 C++ 代码。
25 0
|
19天前
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
54 0
|
2月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
3月前
|
存储 编译器 C语言
C++类与对象深度解析(一):从抽象到实践的全面入门指南
C++类与对象深度解析(一):从抽象到实践的全面入门指南
58 8
|
3月前
|
安全 C语言 C++
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
57 4
|
3月前
|
存储 编译器 数据安全/隐私保护
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解2
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
46 3

推荐镜像

更多