为什么有了while语句,还要再出现for循环呢?
循环的主体由三部分构成,初始化,判断部分,调整部分,在while循环中,当项目程序的体量越来越大时,这三部分的距离会越来越远,开发者迫切需要能把这三部分放在一起的循环语句,所以for循环应运而生。
在日常应用的循环语句中,for循环频率最多,其次是while,最后是do-while
--------------------------------------------------------------------------------------------------------------------
for循环语句结构:
for(初始化表达式1;判断表达式2;改变量表达式3)
{
循环模块;
}
for循环可以在括号里初始化时声明变量类型,如for(int i=0;i<10;),而while循环不能在括号里声明变量类型,如while(int i<10)是不合法的。
for循环括号里的三个表达式都可以省略而系统不会报错。
即for(;;)是合法的一个for循环结构。
for循环的执行流程为:初始化表达式1→判断表达式2→循环模块→改变量表达式3→判断表达式2→循环模块...(无论循环跑了多少次,初始化都只有一次。)
while循环的执行流程为:判断表达式→循环模块→判断表达式→循环模块...(while循环的初始化在判断表达式前,改变量表达式在循环模块里面)
一些关于for循环的书写风格建议:
①不要在for循环体内修改循环变量,防止for循环失去控制
②建议for语句的循环控制变量采取前闭后开的写法。(即想要输出10个数时,采用i=0;i<10的写法,而不是i=0;i<=9,因为当写成i<10时,能让人直观明白是关于10个数的 操作,可读性更强)
③不要随意省略for循环括号中的三个式子。(判断部分省略以后恒为真)
再比如,当我们想要用嵌套循环输出九次“heihhei”时,可以这么写
如果我们觉得内循环里的变量j的初始化语句重复从而省略掉,写成for(;j<3;j++,k++)时,则会出错
此时程序从i=0开始进入内循环,j从0递增到3,输出了三个“heihei”(j从0-2时输出“heihie”,随后自增到3,经判断不满足j<3于是不再输出)
再然后i=1,i=2;此时j的值已然为3,不再满足内循环的判断。
---------------------------------------------------------------------------------------------------------------------------
for循环中的break与continue:
for循环中的break与while循环中的break输出结果相同,作用相同。
循环语句一个良好的书写风格是:先判断,再输出,最后改变变量。
for循环中的continue与while循环中的continue有所差别,因为按照代码习惯,改变量表达式会放在判断语句之后,因此while中的continue会跳过改变量表达式返回判断直接返回判断表达式,有可能造成死循环;而for中的continue执行以后会继续执行改变量表达式(循环模块→改变量表达式3),这样就减少了死循环的存在。
两个关于for循环的小例题:
循环变量可以超过1个。
如while(x<2&&y<5),for (x = 0, y = 0; x < 2 && y < 5; x++, y++).
如上图,判断语句为k=0;这是将0值赋给k,整个式子的值为0,为假,所以循环次数为0