C++for循环详解

本文详细介绍了C++中的for循环结构,包括其语法、执行顺序,并通过两个实例展示了如何使用for循环进行数值求和及字符串大小写转换。第一个例子用于计算输入的n个整数之和,第二个例子则根据输入的两个字符串进行大小写转换并输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++的for循环

for循环是一个执行特定次数的循环的重复控制结构。

语法

执行顺序

  1. 执行init 定义循环控制变量。

  1. 执行condition定义循环结束条件,如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。

  1. 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。

  1. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

例子

当上面代码执行后,会要求输入n,和输入n个数。输出所有数的和。做成一个计数器代码。

实际例子

### C++ 中 `for` 循环的详细用法 #### 传统 `for` 循环C++ 的早期版本(如 C++98/C++03)中,传统的 `for` 循环被广泛用于实现计数控制循环。其基本语法形式如下: ```cpp for (初始化表达式; 条件判断表达式; 更新表达式) { // 循环体 } ``` 这种结构允许开发者通过三个部分来精确控制循环的行为:初始化变量、设置条件以及更新迭代状态[^2]。 例如: ```cpp #include <iostream> int main() { for (int i = 0; i < 5; ++i) { std::cout << "当前索引:" << i << std::endl; } return 0; } ``` 上述代码展示了如何利用传统 `for` 循环打印从 0 到 4 的整数值。 --- #### 基于范围的 `for` 循环C++11 新特性) 自 C++11 起,为了简化对容器或数组的遍历操作,引入了一种新的基于范围的 `for` 循环语法。它的一般形式为: ```cpp for (声明 : 表达式) { // 循环体 } ``` 其中,“声明”表示每次迭代时使用的变量名及其类型;“表达式”通常是一个支持迭代的对象,例如数组、向量或其他 STL 容器。 ##### 示例 1:遍历数组 ```cpp #include <iostream> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5}; for (int value : arr) { cout << value << ' '; } return 0; } // 输出结果:1 2 3 4 5 ``` 此处,`value` 是临时变量,在每轮迭代过程中依次取到数组中的各个元素[^3]。 ##### 示例 2:修改容器内的数据 当需要改变原始集合的内容时,可以通过引用方式访问每个项目。下面的例子演示了将向量中的所有数字加倍的过程: ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<int> nums = {1, 2, 3}; for (int& n : nums) { n *= 2; } for (const int& n : nums) { cout << n << ' '; } return 0; } // 输出结果:2 4 6 ``` 注意这里使用的是非常量引用 (`int&`) ,以便能够直接更改原对象中的值。 --- #### 结合 `auto` 关键字优化代码可读性 随着现代 C++ 发展趋势越来越强调简洁高效编程风格,推荐尽可能多地采用自动类型推导机制减少冗余重复劳动。特别是在处理复杂模板类实例化场景下尤为明显[^4]。 考虑这样一个例子,我们希望输出一个字符串列表里的每一项内容: ```cpp #include <iostream> #include <string> #include <vector> using namespace std; int main(){ vector<string> words {"hello", "world"}; for(auto word:words){ cout<<word<<" "; } return 0; } // hello world ``` 在这里,借助 `auto` 自动检测出 `word` 应该代表的是 `std::string` 类型,从而免去了显式指定类型的麻烦. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值