for循环执行顺序详解(避坑)
今天刷题碰到的一个坑,就是没有注意到for循环的每次判断条件导致的**,也就是for循环的第二句**,每次循环都会执行该判断条件。
for循环的表达式一般如下:
for(表达式1;表达式2;表达式3){表达式4;
}
执行的顺序为:
- 第一次循环
首先执行表达式1(一般为初始化语句,只执行一次),再执行表达式2(条件判断语句),判断表达式1是否符合表达式2的条件,如果符合,则执行表达式4,否则,停止执行,最后执行表达式3. - 之后的循环:
首先执行表达式2,如果符合,继续执行表达式4,否则停止执行,最后执行表达式 - 如此往复,直到不再满足表达式2的条件。
注意点是当我们修改了for循环中表达式2,条件判断语句时,这时你就要注意的你的for循环很可能就会出错。
案例
#include <iostream>
#include <queue>using namespace std;int main()
{queue<int> q;q.push(10);q.push(20);q.push(30);q.push(40);//这个循环只会打印出两个数,因为每次队列弹出值都会改变q的大小for (int i = 0; i < q.size(); i++) {cout << q.front() << ",";q.pop(); //弹出队头} // 10,20//所以为避免每次q的大小改变,可以设定一个临时变量int temp = q.size(); 把temp放到循环中。防止非预期结果。cout << endl;//这个循环会执行四次,因为表达式2没有改变,表达式1仅进行初始化。for (int i = q.size() - 1; i >= 0; --i) {cout << q.front() << ",";q.pop(); //弹出队头} // 10,20,30,40,
}
for循环执行顺序详解(避坑)相关推荐
- Oracle的for循环执行顺序详解
oracle 测试for 循环: 1.经常会有要写for 循环的场景: for 循环名 in (循环体) loop end loop; 2.问题背景: for 循环体内的执行顺序,究竟是查询了结果集, ...
- unity 继承会调用start吗_Unity 继承MonoBehaviour脚本 执行顺序 详解
先看结果 Awake ->OnEnable-> Start ->-> FixedUpdate-> Update -> LateUpdate ->OnGUI ...
- 【异步系列二】Promise原理及执行顺序详解
前言 Promise 是 javascript 中非常重要的一环,熟悉它是必须的,而且在面试中也常常会问到相关面试题. 在了解 Promise 之前,需要了解什么是异步编程,可以参考我的一篇文章:Ja ...
- MSELoss详解+避坑指南
MSE均方损失函数应用: loss(xi,yi)=(xi−yi)2 loss(xi,yi)=(xi−yi)2 这里 loss, x, y 的维度是一样的,可以是向量或者矩阵,i 是下标. 很多的 lo ...
- java try、catch、finally及finally执行顺序详解
1.为什么要用finally 先看一个没有finally的异常处理try-catch语句: 假设count为要使用到的资源,并且用完要求释放此资源.那么我们可以把释放资源的语句放到try-catch后 ...
- Python装饰器执行顺序详解
探究多个装饰器执行顺序 装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思. 疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会 ...
- C++三大继承构造函数的执行顺序详解
写的挺好的,关于继承和构造函数的先后顺序问题. 转自: http://blog.csdn.net/daheiantian/archive/2011/02/18/6438782.aspx 一.单继承 核 ...
- javascript运行机制之执行顺序详解
JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.那么JavaScript是怎么来进行解析的吗?它的执行顺序又 ...
- python两个装饰器执行顺序_python中多个装饰器的执行顺序详解
装饰器是程序开发中经常会用到的一个功能,也是python语言开发的基础知识,如果能够在程序中合理的使用装饰器,不仅可以提高开发效率,而且可以让写的代码看上去显的高大上^_^ 使用场景 可以用到装饰器的 ...
最新文章
- 阿里大鱼.net core 发送短信
- [trustzone]-ARM trustzone技术下常见的软件框图
- Linux+Jenkins自动构建服务器包
- php 导出csv 转义 逗号转义,在csv php中转义换行符
- 工作180:前端是业务需求理解
- Python二级笔记(13)
- goroutine--退出示例--context的使用
- 数据分析师出品:人力资源岗位年终总结可视化模板
- word文档怎么在左侧显示目录?
- 基于视频/摄像头的简单行为动作识别模型的训练步骤
- 苹果手机怎么备份通讯录?
- 计算机控制字如何使用,字由怎么用?一款软件管理1594种字体 很多设计大神都在用...
- 吴恩达 - 神经网络与深度学习 学习笔记
- ZCU102开发板的时钟系统
- php实现的证件照换底色功能示例【人像抠图/换背景图】
- 经典算法——韩信点兵问题的简单算法
- 线性单节锂电充电IC
- 递归算法和文件队列算法----实现多级文件夹的遍历,删除和复制操作
- java-net-php-python-20jspm健身网站管理计算机毕业设计程序
- 一次蚂蚁金服的面试经历
热门文章
- 品牌如何利用Instagram网红营销做好2023斋月推广?
- cmd之拷贝、删除文件夹
- 基于原生Javascript的Carousel设计及实现
- 11 令牌颁发方式 之 客户端凭证模式
- You think you use SharePoint but you really don't 你认为你使用了SharePoint,但是实际上不是
- 20天拿下华为OD笔试之【DFS/BFS】2023Q1A-开心消消乐【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解
- “百度杯” CTF比赛 十月场 Web-登录
- SCAU 计算智能 暴力美学(二)
- python datetime strftime_正确使用python的datetime的strftime方法
- java自动售货机代码_急求简易自动售货机(java编程)