不靠谱程序员 作为一名不靠谱程序员, 技术是次要的, 给广大程序员伙伴们带来欢乐才是真的! 公众号
要回答这个问题,其实你各自编写一段while(1) 和 for(;;)的代码,编译对比一下代码大小和汇编文件,你就大概知道了。 while(1)和for(;;)语法表达 while( 表达式 ) { 语句 } 其中:
for(表达式1; 表达式2; 表达式3) { 语句}
while(1)和for(;;)异同点 验证while(1)和for(;;)差异 // filename: while.c int main(int argc, char const *argv[]) { while(1) {}
return 0; }
gcc -S -o while.s while.c gcc -S -o for.s for.c ; filename: whiles .file 'while.c' .text .globl main .type main, @functionmain:.LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %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, @function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %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 |
|