for循环介绍

for循环的一般形式为:

for (语句1; 语句2; 语句3)
{
语句块
}

1、for循环开始时,会先止血语句1,而且在整个循环过程中只执行一次语句1。

2、判断表达式的条件,如果条件成立,就止血一次循环体中的语句块。

3、语句块执行完后,结下了会执行语句2。

4、重复第2步和第3步,直到表达式的条件不成立才结束for循环。

注意:

        1、在for循环中,语句1、表达式和语句2都可以为空,for(;;)等同预while(1)。

        2、continue和break两个关键字也可以用在for循环体中。

while循环介绍

while循环的一般形式为:

while (表达式)
{
语句块
}

先计算表达式的值,当值为真时(非0为真),执行语句块,执行完语句块之后,回到循环收不再次计算表达式的值,如果为真,再次执行语句块......,一直重复这个过程知道表达式不为真,就不再执行语句块。

for(;;)和while(1)的对比

首先要说明的是两者间的效率高低最重要的还是取决于编译器是否会进行优化!当编译器对程序不做优化时,两者的效率高低都差不多,编写时看个人喜好和习惯。当编译器对程序做优化时,for(;;)效率更高一点,有如下原因:

1、两个";"都是空语句,因此编译器对齐进行了优化,直接进入了循环体,而while(1)相当于是一个表达式,每循环一次,程序都需要判断一次进入的常量是否为0,因此相当来说for循环的死循环比较高效一点。

2、for(;;)相当于是7个字符,而while(1)是8个字符,因此for的死循环效率更高一点。

循环的选择

1、从应用场景来看,for循环通常用于已知循环次数,而while循环通常适用于未知循环次数。

2、从内存角度来看,局部变量在栈内存中存在,当for循环结束,那面变量会及时被gc(垃圾回收器)及时释放掉,不浪费空间。若使用循环之后还想去访问循环语句中控制那个变量,用while循环。

注意:

1、在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。

2、尽量把循环嵌套控制在三层以内。

3、for语句的控制表达式不能包含任何浮点型的对象。