for循环的灵活性
for循环把初始化、测试和更新组合在一起,其基本形式如下所示:
for(初始化;测试条件;更新表达式)
{
//循环体
}
关键字for后面的圆括号中3个表达式,分别用两个分号隔开:
第一个表达式是初始化,只会在for循环开始时执行一次。
第二个表达式是测试条件,在执行循环之前对表达式求值。如果表达式为假,循环结束。
第三个表达式执行更新,在每次循环结束时求值。
for循环的结构图:
除此之外,这里注重学习一下for循环的其它9种用法:
第一种:可以使用递减运算符来递减计数器:
int main(void)
{
for(int secs =; secs >; secs--)
{
printf("%d seconds!\n", secs);
}
return0;
}
第二种:可以让计数器递增2、10等:
int main(void)
{
//secs从2开始,每次递增5
for(int secs =; secs <; secs +=)
{
printf("%d seconds!\n", secs);
}
return0;
}
第三种:可以用字符代替数字计数
int main(void)
{
char ch;
for( ch ='a'; ch <='z'; ch++)
{
printf("the ascii value for %c is %d.\n", ch, ch);
}
return0;
}
第四种:除了测试迭代次数外,还可以测试其它条件
for(num =; num*num*num <=; num++);
第五种:可以让递增的量几何增长,而不是算数增长。也就是说,每次都乘上而不是加上一个固定的量
int main(void)
{
double debt;
for(debt =100.0; debt <150.0; debt *=1.1)
{
printf("your debt is now $%.2f.\n", debt);
}
return0;
}
第六种:第三个表达式可以使用任意合法的表达式。无论是什么表达式,每次迭代都会更新表达式的值
int main(void)
{
int x;
int y =;
for(x =; y <=; y =(++x *)+)
{
printf("%10d %10d\n", x, y);
}
return0;
}
第七种:可以省略一个或多个表达式(但是不能省略分号),只要在循环中包含能结束循环的语句即可.
int main(void)
{
int x =;
int y =;
for(; y <=; y =(++x *)+)
{
printf("%10d %10d\n", x, y);
}
return0;
}
第八种;第一个表达式不一定是给变量赋初值,也可以是printf()。记住,在执行循环的其它部分之前,只对第一个表达式求值一次或执行一次
int main(void)
{
int x =;
int y =;
for(printf("hello dear"); y <=; y =(++x *)+)
{
printf("%10d %10d\n", x, y);
}
return0;
}
第九种:循环体重的行为可以改变循环头中的表达式。
for(y =; y <=; y = y + delta);
总而言之,具体使用视情况而定!!!
for循环的灵活性的更多相关文章
- 【C语言学习】《C Primer Plus》第6章 C控制语句:循环
学习总结 1.循环的语法跟其他语言的没差多少,可能大多数语言都在C的基础上发展出来的,所以大同小异不奇怪. 2.在判断表达式里,C语言只有0被认为是假,所有非零值正整数都被认为真. #include ...
- [转]Java 8:不要再用循环了
以下内容为转载,没有在jdk8中测试,具体业务场景是否存在BUG或使用需要注意的地方有待测试. ------------------分割线---------------------- 正如我之前所写的 ...
- Java 8:不要再用循环了
本文由 ImportNew - 进林 翻译自 deadcoderising.欢迎加入翻译小组.转载请见文末要求. 正如我之前所写的,Java 8中的新功能特性改变了游戏规则.对Java开发者来说这是一 ...
- C--控制语句循环例子
C的三种循环while.for和do while 先说一下scanf()函数的返回值问题 当scanf("%d,%d",&a,&b);如果用户正确输入了俩个整形变 ...
- Java 8:不要再用循环了 Stream替代for循环
原文:http://www.importnew.com/14841.html 在这篇文章里,我们将会去了解传统循环的一些替代方案.在Java 8的新功能特性中,最棒的特性就是允许我们去表达我们想要完成 ...
- C Primer Plus学习笔记(五)- C控制语句:循环
伪代码的概念: 伪代码是一种用简单的句子表示程序思路的方法,它与计算机语言的形式相对应.伪代码有助于设计程序的逻辑.确定程序的逻辑无误之后,再把伪代码翻译成实际的编程代码.使用伪代码的好处之一是,可以 ...
- Java 8:用Stream来循环集合
本文由 ImportNew - 进林 翻译自 deadcoderising.欢迎加入翻译小组.转载请见文末要求. 正如我之前所写的,Java 8中的新功能特性改变了游戏规则.对Java开发者来说这是一 ...
- C Primer Plus(第五版)6
第 6 章 C 控制语句 : 循环 在本章中你将学习下列内容 已经多次学过,没怎么标注 · 关键字: for while do while · 运算符: < > >= <= ! ...
- ava 8中的新功能特性
正如我之前所写的,Java 8中的新功能特性改变了游戏规则.对Java开发者来说这是一个全新的世界,并且是时候去适应它了. 在这篇文章里,我们将会去了解传统循环的一些替代方案.在Java 8的新功能特 ...
随机推荐
- js 鼠标拖拽元素
基础知识 event.clientX.event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条.IE事件和标准事件都定义了这2个属性 event. ...
- 为caffe添加最简单的全通层AllPassLayer
参考赵永科的博客,这里我们实现一个新 Layer,名称为 AllPassLayer,顾名思义就是全通 Layer,“全通”借鉴于信号处理中的全通滤波器,将信号无失真地从输入转到输出. 虽然这个 Lay ...
- 如何读取Linux键值,输入子系统,key,dev/input/event,dev/event,C语言键盘【转】
转自:https://blog.csdn.net/lanmanck/article/details/8423669 相信各位使用嵌入式的都希望直接读取键值,特别是芯片厂家已经提供input驱动的情况下 ...
- dubbo系列七、dubbo @Activate 注解使用和实现解析
一.用法 Activate注解表示一个扩展是否被激活(使用),可以放在类定义和方法上,dubbo用它在spi扩展类定义上,表示这个扩展实现激活条件和时机. @Activate(group = Cons ...
- 如何在windows上调试安卓机谷歌浏览器上的页面
- 下面的方法仅在windows和安卓机上测试过,,,, - 手机(安卓机)需要安装chrome与电脑(Windows)上的chrome配合,也就是只能调试谷歌浏览器上的页面 1.手机的准备工作 打开 ...
- 有pom.xml文件但是无法用maven构建问题
java项目转maven项目,要注意pom.xml文件中是否定义了JDK的版本,要与环境保持一致.项目,右键,configure,选择转换为maven项目即可.转换后,有三个位置需要注意: 1.Jav ...
- sqlyog通过跳板机ssh连接mysql数据库
方法一: 方法二: 在跳板机上启动sh脚本做ssh端口转发,客户端配置连接 10.0.0.1的8306端口即可 jdbc:mysql://10.0.0.1:8306/testdb?useUnicode ...
- 源码编译安装nginx1.4.7
传统上基于进程或线程模型架构的web服务通过每进程或每线程处理并发连接请求,这势必会在网络和I/O操作时产生阻塞,其另一个必然结果则是对内存或CPU的利用率低下.生成一个新的进程/线程需要事先备好其运 ...
- Android: SlidingDrawer(滑动式抽屉)
Android控件之SlidingDrawer(滑动式抽屉)详解与实例 一.简介 SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容.它可以垂直或水平滑动,它有俩个V ...
- android 获取手机GSM/CDMA信号信息,并获得基站信息
本文转自:http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/ 在Android中我们常用的轻松获取WIFI信号列表,那如 ...