while(1) 和 for(;;)有什么区别?
2、延时任务实现方案
作者 | strongerHuang 微信公众号 | 嵌入式专
要回答这个问题,其实你各自编写一段while(1) 和 for(;;)的代码,编译对比一下代码大小和汇编文件,你就大概知道了。
while(1)和for(;;)语法表达
while( 表达式 ){语句}
其中:
表达式:是循环条件
语句:为循环体。

for(表达式1; 表达式2; 表达式3){语句}
1.先求解表达式1
2.求解表达式2
若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;
若其值为假(0),则结束循环,转到第5)步。
3.求解表达式3
4.转回上面第2)步继续执行。
5.循环结束,执行for语句下面的一个语句。

while(1)和for(;;)异同点
验证while(1)和for(;;)差异
// filename: while.cint main(int argc, char const *argv[]){while(1){}return 0;}
// filename: for.cint main(int argc, char const *argv[]){for(;;){}return 0;}
gcc -S -o while.s while.cgcc -S -o for.s for.c
; filename: whiles.file "while.c".text.globl main.type main, @functionmain:.LFB0:.cfi_startprocpushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa_register 6movl %edi, -4(%rbp)movq %rsi, -16(%rbp).L2:jmp .L2.cfi_endproc.LFE0:.size main, .-main.ident "GCC: (GNU) 9.3.0".section .note.GNU-stack,"",@progbits
; filename: for.s.file "for.c".text.globl main.type main, @functionmain:.LFB0:.cfi_startprocpushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa_register 6movl %edi, -4(%rbp)movq %rsi, -16(%rbp).L2:jmp .L2.cfi_endproc.LFE0:.size main, .-main.ident "GCC: (GNU) 9.3.0".section .note.GNU-stack,"",@progbits
最近热文阅读:
1、使用MySQL,请用好 JSON 这张牌! 2、延时任务实现方案 3、服务端如何防止重复支付 4、五年工作经验总结 16 条的代码规范 5、为什么我劝你放弃了Restful API? 6、Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合 7、公司规定所有接口都用 POST请求,这是为什么? 8、为什么阿里强制 boolean 类型变量不能使用 is 开头? 9、面试官:InnoDB中一棵B+树可以存放多少行数据? 10、MyBatis批量插入几千条数据,请慎用foreach 关注公众号,你想要的Java都在这里
评论
