for循环顺序讲解

本文详细探讨了for循环的工作原理,重点在于循环执行的步骤顺序,以及通过实例分析了不同形式的for循环中条件更新的位置如何影响循环流程。作者揭示了for循环的步骤1243执行模式,并通过代码演示来澄清常见的误解。

因为今天查看代码的时候突然发现一个有意思的东西,那就是for循环调用的顺序,他的执行顺序是什么,后面查看后明了,做一个笔记用作自己记录学习。

一、基础的for循环

大家都知道for循环的一些规则,用于判断条件是否满足,不满足则退出

#include <stdio.h>
int main ()
{
	for (int i = 0; i < 3; i++)
	{
		printf("这是一个简单的循环i = %d\n", i);
	}
}

这样都知道,当I=3 的时候,我们的循环就退出,也就是整个函数会执行3次。

# ./a.out 
这是一个简单的循环i = 0
这是一个简单的循环i = 1
这是一个简单的循环i = 2

我们再换个写法

#include <stdio.h>
int main ()
{
    for (int i = 0; i < 3; ++i)
    {
        printf("这是一个简单的循环i = %d\n", i);
    }
}
# ./a.out
这是一个简单的循环i = 0
这是一个简单的循环i = 1
这是一个简单的循环i = 2

发现没,我将i++换成了 ++i,我们都知道i++和++i的区别在于,一个计算后执行+1,一个先+1再执行,但是我们打印出来的值都一样,这说明了什么。说明有可能我们最后一个条件没有被执行。

二、for执行的步骤

也就是说,如果我们将刚才的函数成步骤来进行执行
步骤1: int i = 0;
步骤2: i < 3;
步骤3: ++i;
步骤4: for循环函数内部的执行函数;

查看了对应的资料后,发现并不是按照我们想象中的 步骤 1234 进行执行的,而是按照步骤 1243,243,243这样进行执行的,也就是说当步骤2不满足条件的时候,我们剩下的步骤43都不会执行,而步骤1只执行一次。

为了更加清晰的展示,我们再写一个测试代码:

#include<stdio.h>
int out(char c)
{
    printf("%c\n", c);
    return 1;
}
void main()
{
    int i = 0;
    for (out('A'); out('B') && (i < 2); out('C'))
    {
        i++;
        out('D');
    }
}

# ./a.out test.c 
A
B
D
C
B
D
C
B

我们可以将输出做个一整理:
第一次循环输出 ABDC
第二次循环输出 BDC
第三次循环输出 B(这里不叫循环,因为这个循环根本就没有执行,只执行前面的一直为true的打印输出函数)

这样我们就很清晰的看到了整个for循环的顺序了。

### Python 中 `for` 循环的工作原理 在 Python 编程语言中,`for` 循环是一种非常重要的控制流语句,主要用于遍历任何序列或其他可迭代对象(如列表、元组、字典、字符串等)。其基本语法如下: ```python for 变量 in 序列: 执行代码块 ``` 每次执行循环体之前,都会从序列中取出下一个元素并赋值给变量。当整个序列被完全遍历后,循环结束。 #### 遍历不同类型的可迭代对象 以下是几个常见的 `for` 循环示例及其应用场合: 1. **遍历列表** 列表是最常使用的数据结构之一,可以轻松地通过 `for` 循环访问其中的每个元素。 ```python fruits = ['apple', 'banana', 'cherry'] for fruit in fruits: print(fruit) ``` 输出结果将是逐行显示水果名称[^1]。 2. **遍历字符串** 字符串本身也可以看作是一个由单个字符组成的序列,因此可以用 `for` 循环逐一处理这些字符。 ```python message = "hello" for char in message: print(char, end=" ") ``` 这段程序会将字符串中的每个字母依次输出到同一行[^3]。 3. **结合范围函数生成数字序列** 如果需要创建一系列连续整数,则可以借助内置函数 `range()` 来实现这一点。 ```python for i in range(5): # 生成从0至4共五个数值 print(i) ``` 上述脚本展示了如何利用 `range()` 函数配合 `for` 循环打印前五个自然数[^2]。 4. **嵌套循环** 当遇到多维数组或者其他复杂的数据集时,可能需要用到多个层次上的重复动作;此时可以通过嵌套形式完成更复杂的逻辑运算。 ```python matrix = [[1, 2], [3, 4]] for row in matrix: for element in row: print(element) ``` 此处定义了一个二维矩阵并通过双重循环提取所有成员项。 #### 控制流程的关键字 除了简单的顺序读取外,在实际开发过程中还经常涉及到提前终止当前轮次(`continue`) 或者直接跳出整个过程 (`break`) 的需求场景: - 使用 `continue`: 跳过本次剩余部分继续下一轮; ```python numbers = [1,-2,3,-4] for num in numbers: if num < 0: continue print(num * num) ``` - 使用 `break`: 结束整个循环不再往下走 ```python search_list = ["not", "the one", "target"] target_found = False for item in search_list: if item == "target": print("Target found!") break ``` 上述两个片段分别说明了跳过高亮负号以及找到目标即停止查找的情况。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值