for(;;)
语句是一个空语句。虽然是一个空状态,但编译器应将其视为null
语句,它等同于0
,即FALSE。因此,据我所知,它不应该被评估。
但令我惊讶的是,编译器会发送真实的信号。
请解释一下。
答案 0 :(得分:10)
C标准规定如果条件存在,那么它应被视为具有非零值。
6.8.5.3,p2 for(for-1; expression-2; expression-3)的for语句
可以省略子句-1和表达式-3。 省略 expression-2被非零常量替换。
(强调我的)
这与while
循环不一致,因为条件表达式在while循环中不能为空。但这就是C在许多方面的表现:)
答案 1 :(得分:3)
无限循环:
如果条件永远不会变为假,则循环变为无限循环。 for循环传统上用于此目的。由于不需要构成for循环的三个表达式,因此可以通过将条件表达式留空来进行无限循环。
#include <stdio.h>
int main ()
{
for( ; ; )
{
printf("This loop will run forever.\n");
}
return 0;
}
当条件表达式不存在时,假定为真。您可能有一个初始化和增量表达式,但C程序员更常使用for(;;)构造来表示无限循环。 快乐编码: - )
答案 2 :(得分:2)
null语句不等同于$.each(payload.html, function (i, item) {
if (item.type == 'select') {
$.each(item.options, function(o, option) {
option.html = option.caption;
delete option.caption;
});
};
});
或0
。省略false
循环中的所有表达式使其等同于for
。
当while(1)
循环中的条件语句为空时,则需要在循环体中指定。