文章目录

  • for语句
    • break与continue
  • 关于if语句的建议
  • 关于for循环的变种写法
  • 一道笔试题

for语句

在之前的学习中我们已经了解到了循环结构中while语句的用法,那么为什么我们还要学习for语句呢?别着急,听我慢慢道来。

#include<stdio.h>int main()
{int i = 0;//初始化部分,用于初始化循环变量的while (i < 10)//条件判断部分,用于判断循环是否终止{printf("%d ", i);i++;//调整部分,用于循环条件的调整}return 0;
}

因为我们这个代码比较简单,所以,循环结构中的初始化部分、条件判断部分和调整部分离的比较进,如果我们后期学习中会有更加复杂的代码,这几个部分比较分散,代码修改起来就会很麻烦,这时候我们就请出我们的for语句了。

for(表达式1;表达式2;表达式3)
{
循环语句;
}

表达式1:
表达式1为初始化部分,用于初始化循环变量。
表达式2:
表达式2为条件判断部分,用于判断循环是否终止。
表达式3:
表达式3为调整部分,用于调整循环变量。

int main()
{int i = 0;for (i = 1; i <= 10; i++){printf("%d ", i);}return 0;
}

上面是用for语句改写后的代码,在后期代码复杂起来时,可以方便我们更改代码。

break与continue

又是这个老生常谈的话题,在之前我们也接触到了break continue,那在for语句中break continue的用法与之前的while语句是否一样呢?

#include<stdio.h>int main()
{int i = 0;for (i = 1; i <= 10; i++){if (i == 5){break;}printf("%d ", i);}return 0;
}

打印的结果为1 2 3 4 所以在if语句中break的用法与while语句中的一样,都是直接永久结束循环。

int main()
{int i = 0;for (i = 1; i <= 10; i++){if (i == 5){continue;}printf("%d ", i);}return 0;
}

通过调试我们发现,当我们在if语句中碰见了continue时,会直接跳转到循环语句的调整部分,也就是表达式3i++;的地方进行判断,而在while语句中碰见continue会直接跳过本次循环之后的语句,可能会跳过循环语句的调整部分造成死循环。这就是continue在这两个语句中的区别。

关于if语句的建议

1.不可在循环体内修改循环变量,防止for循环失去控制

例如

#include<stdio.h>int mian()
{int i = 0;int j = 0;for (i = 1; i < 10; i++){for (j = 1; j < 10; i++){printf("hehe\n ");}}return 0;
}

上述代码就会造成死循环,原因就是在循环体内修改了循环变量。

2.建议for语句的循环控制变量的取值采用“前闭后开”的写法

//代码1
int main()
{int i = 0;for (i = 1; i < 10; i++){printf("%d ", i);}return 0;
}//代码2
int main()
{int i = 0;for (i = 1; i <=9; i++){printf("%d ", i);}return 0;
}

如上述代码,代码1为前闭后开的写法,代码2为两边都是闭区间,我们更推荐用第一种写法。

关于for循环的变种写法

int main()
{for (;;)printf("hehe");return 0;
}

类似于这样代码,省略的初始化部分,判断部分,调整部分,造成了一个死循环。初学者不建议大家省略,因为容易导致问题。
例如:

int main()
{int i = 0;int j = 0;for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){printf("hehe\n");}}return 0;
}

上述代码的结果输出了9个hehe,如果我们省略初始化部分会有什么变化呢?

int main()
{int i = 0;int j = 0;for (; i < 3; i++){for (; j < 3; j++){printf("hehe\n");}}return 0;
}

我们发现结果从输出9个hehe变成了3个hehe,这是为什么呢?原因就是,第一次循环之后,变量j的值已经变成了3,第二次循环当i++此时i = 2,进入循环嵌套,因为没有初始化部分,j的值还是3,所以循环结束,什么也没有输出,第三次循环也一样,所以输出的hehe从9个变成了3个。

一道笔试题

最后我们来看一道笔试题加深一下印象吧:请问下面代码,循环要循环多少次?

int mian()
{int i = 0;int j = 0;for (i = 0, j = 0; j = 0; i++, j++){j++;}return 0;
}

答案是0 次,因为条件判断部分为j = 0是赋值运算符,0为假,不进入循环,你做对了嘛?好了,以上就是关于if语句的一些知识点。

C语言详解系列——循环语句详解(2)for语句的语法结构相关推荐

  1. C语言详解系列——循环语句详解(1)while语句的语法结构

    文章目录 while语句 break continue while语句 之前的学习中我们了解到了if语句的用法,这个语句只会执行一次,但在我们的生活当中有许多事情是需要重复去做的,那我们应该怎么实现呢 ...

  2. C语言详解系列——循环语句详解(3)do while语句的语法结构

    文章目录 do while语句 do while语句中的break和continue break continue do while语句与while语句的不同点 简单练习 do while语句 之前的 ...

  3. C语言详解系列——分支语句详解if、switch

    文章目录 什么是语句 if语句 悬空else switch语句 break的使用 default 的使用 在之前的分享中,我们了解到了c语言是结构化的程序设计语言.分为顺序结构,选择结构,循环结构三大 ...

  4. c语言while将字符循环,C语言 while语句的用法详解

    在C语言中,共有三大常用的程序结构: 顺序结构:代码从前往后执行,没有任何"拐弯抹角": 选择结构:也叫分支结构,重点要掌握 if else.switch 以及条件运算符: 循环结 ...

  5. c语言输入循环语句,C语言中输入输出和循环语句详解.ppt

    C语言中输入输出和循环语句详解 C语言的输入输和循环分支语句详解 本章主要向大家介绍下C语言的输入和输出功能以及循环分支语句的使用 第4章 顺序结构程序设计 3.1 C语言语句 3.2 赋值语句 3. ...

  6. C语言初级篇-----循环语句详解

    目录 循环语句 一.while循环 二.for循环 三.do...while循环 四.循环语句练习 getchar 与 putchar 总结 循环语句  if 语句:当条件满足的情况下,if语句后的语 ...

  7. [C语言] for循环详解 循环 for循环实例巧解

    前言>>> 嘿嘿,本文要讲的小方法实例使用牛客网的这道题 ↑↑↑ .怎么样!!?  ^  ^ 100% 到底是系统太假还是我写得好??? 开始>>>   题目:线段 ...

  8. 单片机c语言常用的语句有几条,单片机C语言常用语句详解

    <单片机C语言常用语句详解>由会员分享,可在线阅读,更多相关<单片机C语言常用语句详解(22页珍藏版)>请在人人文库网上搜索. 1.C51编程中常见语句的总结.首先,C51定义 ...

  9. c语言中循环次数的问题,【C语言】循环题目详解

    老九学堂传送门 C语言有3种循环:for.while.do while: 接下来,老九君带着大家来详细的解析一下关于循环的题目,让你更加清楚和熟练的掌握循环. 三大循环 1.whlie循环: /* w ...

最新文章

  1. 计算机科学NIP,NIP自然语言处理主要应用在哪些领域呢?
  2. 微服务如何设计一个配置中心
  3. 模拟人脑项目彻底宣告失败:耗资10亿欧,10年前轰动全球,如今死得悄无声息...
  4. Zulip 2.0.3 发布,功能强大的群组聊天软件
  5. 程序员在很多人心里的作用...
  6. MD5加密算法的一些知识
  7. 京东把 Elasticsearch 用的真牛逼!
  8. c#获取对象的唯一标识_Articy Importer Guide - 01 基本对象处理
  9. JAVA面试整理之——JAVA基础
  10. Python【算法中心 01】Web框架Django入门(安装+项目创建+应用创建+服务启动)Python搭建算法中心后台实例分享
  11. C#不要再使用Npoi啦,使用MiniExcel操作Excel文件更快更高效!
  12. 中移4G模块-ML302-OpenCpu开发-(MQTT连接阿里云-RRPC通讯)
  13. python编程入门第3版pdf-Python编程入门第3版PDF电子书免费下载
  14. python3 协程 返回值_python asyncio 获取协程返回值和使用callback
  15. WEB测试与APP测试重点及区别
  16. 佛言:人有二十难(为)
  17. 炮灰模型:对女生选择追求者的数学模型的建立-转
  18. MTK6589抓取Log,VM_Log,pcm data,寄存器抓取方法
  19. 雷电9模拟器安装magisk和lsposed
  20. memcached介绍与作用和它的工作原理

热门文章

  1. 分享一波初中级测试面试题
  2. ROS下载、安装与配置
  3. Git - 维护项目
  4. Instrumentation 详解
  5. 使用eaysexcel时里面的日期转换问题
  6. 计算机行业高级职称考试大纲,【2017年整理】高级通信工程师职称考试--终端与业务考试大纲.doc...
  7. hfs文件服务器使用
  8. delphi中ShellExecute使用详解
  9. 《足球与互联网产品》2:从欧洲杯感悟联网产品团队
  10. Web应用服务器-Tomcat