有了 for 循环,为什么还要 while(1)?
while( 表达式 )
{
语句
}
表达式:是循环条件
语句:为循环体。
for(表达式1; 表达式2; 表达式3)
{
语句
}
1.先求解表达式1
2.求解表达式2
若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;
若其值为假(0),则结束循环,转到第5)步。
3.求解表达式3
4.转回上面第2)步继续执行。
5.循环结束,执行for语句下面的一个语句。
// filename: while.c
int main(int argc, char const *argv[])
{
while(1)
{}
return ;
}
// filename: for.c
int main(int argc, char const *argv[])
{
for(;;)
{}
return ;
}
gcc -S -o while.s while.c
gcc -S -o for.s for.c
; filename: whiles
.file "while.c"
.text
.globl main
.type main, @function
main:
.LFB:
.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
.LFE:
.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:
.LFB:
.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
.LFE:
.size main, .-main
.ident "GCC: (GNU) 9.3.0"
.section .note.GNU-stack,"",@progbits
↘
相关文章