【精通C语言】:深入解析for循环,从基础到进阶应用

个人头像
🎥 屿小夏 : 个人主页
🔥个人专栏 : C语言详解
🌄 莫道桑榆晚,为霞尚满天!


在这里插入图片描述

📑前言

在C语言中,for循环是一种常用的循环结构,具有灵活的语法和强大的功能。本文将深入探讨for循环的基础语法、进阶用法以及注意事项,以帮助读者更好地理解和运用for循环。

一、for循环基础

1.1 语法

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

表达式1
表达式1为初始化部分,用于初始化循环变量的。

表达式2
表达式2为条件判断部分,用于判断循环时候终止。

表达式3
表达式3为调整部分,用于循环条件的调整。

1.2 示例

在了解了基础的语法后,我们来看一段示例的代码,让你对for循环有深的理解。

int main()
{
   
	int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
	for(i=1; i<=10; i++)
	{
   
		printf("%d ", i);
	}
	return 0;
}

1.3 流程图

image-20240108103707748

1.4 for与while的对比

int i = 0;
//实现相同的功能,使用while
	i=1;//初始化部分
while(i<=10)//判断部分
{
   
	printf("hehe\n");
	i = i+1;//调整部分
}
//实现相同的功能,使用for
for(i=1; i<=10; i++)
{
   
	printf("hehe\n");
}

可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样
查找修改就不够集中和方便。所以,for循环的风格更胜一筹;for循环使用的频率也最高。

二、for循环进阶

2.1 for中的break和continue

for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。

但是还是有些差异:

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

在代码1中,当i等于5时,使用break语句会使循环立即终止,不再执行剩下的循环体,输出结果为1 2 3 4。

而在代码2中,当i等于5时,使用continue语句会跳过当前循环,继续下一次循环,输出结果为1 2 3 4 6 7 8 9 10。

因此,break语句会完全终止循环,而continue语句只是跳过当前循环,继续下一次循环。

2.2 for语句的循环控制变量

建议:

  1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
  2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{
   }

//两边都是闭区间
for(i=0; i<=9; i++)
{
   }

2.3 for循环变种

for循环中的初始化部分,判断部分,调整部分是可以省略的。

  1. 初始化部分省略:循环中无法初始化循环变量,可能导致循环变量未被正确初始化而造成意外行为。
  2. 判断部分省略:循环条件无法被判断,导致无法退出循环,造成无限循环。
  3. 调整部分省略:循环中无法对循环变量进行调整,可能导致循环变量无法按预期进行调整而造成意外行为。

因此,虽然 for 循环中的初始化部分、判断部分、调整部分是可以省略的,但是不建议全部省略,否则可能会导致程序无法正常工作或者产生意外行为。

for(;;)
{
   
    printf("hehe\n");
}

for循环的嵌套

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

多变量控制循环

int x, y;
for (x = 0, y = 0; x<2 && y<5; ++x, y++)
{
   
    printf("hehe\n");
}

2.4 笔试巩固题

请问下面代码循环要循环多少次?

#include <stdio.h>
int main()
{
   
	int i = 0;
	int k = 0;
	for(i =0,k=0; k=0; i++,k++)
		k++;
	return 0;
}

这段代码的问题在于for循环的条件部分。

在C语言中,= 是赋值操作符,而 == 才是比较操作符。

在这段代码中,for(i =0,k=0; k=0; i++,k++) 中的 k=0 是一个赋值操作,而不是比较操作。这意味着这个条件永远为真,导致无限循环。

所以,这段代码的问题是无限循环,因为 for 循环的条件永远为真。

🌤️全篇总结

看到这里相信聪明的你已经对for循环的基础语法有了深入的了解,并且掌握了for循环的进阶用法和注意事项。for循环作为一种强大的循环结构,可以帮助程序实现复杂的逻辑控制和重复执行任务。在实际编程中,合理灵活地运用for循环,可以提高代码的效率和可读性,为程序的开发和维护带来便利。

C语言结尾图

相关推荐

  1. CentOS常见命令深度解析基础

    2024-01-09 20:56:03       31 阅读
  2. CSS文本样式全面解析基础

    2024-01-09 20:56:03       27 阅读
  3. 深入解析 MySQL 事务:基础概念高级应用

    2024-01-09 20:56:03       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-09 20:56:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-09 20:56:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-09 20:56:03       82 阅读
  4. Python语言-面向对象

    2024-01-09 20:56:03       91 阅读

热门阅读

  1. POST请求方式解决乱码问题【Spring MVC】

    2024-01-09 20:56:03       68 阅读
  2. 【第八节】变量与运算符-整型数据类型的使用

    2024-01-09 20:56:03       54 阅读
  3. 基于长短期神经网络LSTM的测量误差预测

    2024-01-09 20:56:03       63 阅读
  4. python画彩虹和小熊

    2024-01-09 20:56:03       53 阅读
  5. Vue2和Vue3的区别

    2024-01-09 20:56:03       60 阅读
  6. DD小桔高级数分 2面挂

    2024-01-09 20:56:03       60 阅读
  7. Spring面试整理-Autowired和Resource关键字的区别

    2024-01-09 20:56:03       59 阅读
  8. beego框架编写食品溯源区块链后端

    2024-01-09 20:56:03       46 阅读
  9. 神经网络中的梯度爆炸

    2024-01-09 20:56:03       59 阅读
  10. Golang语言switch case

    2024-01-09 20:56:03       65 阅读
  11. 【XDOJ】C语言期末真题带练及思路分析

    2024-01-09 20:56:03       51 阅读