我读了3个用冒号(;)分隔的表达式,这是c编程中for循环所必需的,但这个问题测试表达式被忽略了,这可能吗



根据我的知识,下面的代码中没有给出测试表达式,但当我读到这一点时,有必要在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被替换为非零常数。

最新更新