根据我的知识,下面的代码中没有给出测试表达式,但当我读到这一点时,有必要在for((部分进行初始化、测试和增量函数,这怎么可能呢?
#include <stdio.h>
int main(int argc, char const *argv[])
{
int i=1,j=1;
for(;; i+=j)
{
if(i>5)
{
break;
}
else
{
j+=i;
}
printf("n%d",j);
}
return 0;
}
因为规范允许省略零件。省略循环条件意味着无限循环。
N1570表示:
6.8.5.3 for语句
1声明for ( clause-1 ; expression-2 ; expression-3 ) statement
行为如下:表达式表达式-2是控制表达式在每次执行循环体之前进行评估。表达式-3为在每次执行循环体之后作为void表达式进行求值。如果第1条是声明,它声明的任何标识符的范围都是声明的剩余部分,并且整个循环,包括其他两个表达式;按执行顺序到达在控制表达式的第一次评估之前。如果第1条是一个表达式,则为在对控制表达式进行第一次求值之前被求值为void表达式。158(
2第1条和第3条都可以省略。省略的表达式-2被替换为非零常数。