有两种写死循环的方式,即:for(; ;)和while(1),但是这两种哪个效率?
首先要说明的是两者之间的效率高低最重要的还是取决于编译器是否有优化!
- 当编译器对程序不做优化时,两者的效率高低都差不多,编写时看个人喜好和习惯!
- 当编译器对程序有优化时,for(; ;)效率更高一点,有如下两个原因:
(1)两个“;”都是空语句,因此编译器对齐进行了优化,直接进入循环体,而while(1)相当于是一个表达式,每循环一次,程序都需要判断一次要进入的常量是否等于0,因此相对来说for循环的死循环就比较高效一些;
(2)for(; ; )相当于是7个字符,而while(1)是8个字符,因此for的死循环高效一些。
1、 for
for(; ; )
{
int i;
i++;
}
2、 while(1)
while(1)
{
int i;
++i;
}