不是`for(;;)`求值为false,因为它是一个空语句?

ano*_*ous 1 c for-loop

for(;;)声明是一个空话.虽然是一个空的条件,但编译器应将其视为null等效的语句0,即FALSE.因此,据我所知,它不应该被评估.

但令我惊讶的是,编译器发送了真实的信号.

请解释一下.

P.P*_*.P. 10

C标准规定如果条件存在,则应将其视为具有非零值.

6.8.5.3,p2(第-1条;表达式-2;表达式-3)的for语句

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

(强调我的)

这与while循环不一致,因为条件表达式不能在while循环中保留为空.但这就是C在许多方面的表现:)