如何在内部解析for循环

Har*_*ora -1 c for-loop

如果不写表达式,for循环如何工作.例如

int i=0 , j=1;
for(;;)
Run Code Online (Sandbox Code Playgroud)

dbu*_*ush 5

for与缺少中间表达式循环是一个无限循环.

C标准的 6.8.5.3节:

1声明

for ( clause-1 ; expression-2 ; expression-3 ) statement
Run Code Online (Sandbox Code Playgroud)

行为如下:表达式expression-2是在每次执行循环体之前计算的控制表达式.在每次执行循环体之后,表达式-3被评估为void表达式.如果clause-1是一个声明,它声明的任何标识符的范围是声明的剩余部分和整个循环,包括其他两个表达式; 它是在控制表达式的第一次评估之前按执行顺序到达的.如果clause-1是表达式,则在第一次控制表达式求值之前将其计算为void表达式.

2可以省略clause-1和expression-3.省略的表达式-2由非零常量替换.

因为缺少的"expression-2"被替换为非零常量,并且因为非零值的计算结果为true,所以这会给你一个无限循环.