我读到c编程中for循环中需要3个以冒号(;)分隔的表达式,但这个问题测试表达式是很常见的,可能吗?

我读到c编程中for循环中需要3个以冒号(;)分隔的表达式,但这个问题测试表达式是很常见的,可能吗?,c,loops,C,Loops,在下面的代码中,根据我所知,并没有给出测试表达式,但在我阅读时,有必要在for()部分中进行初始化、测试和增量函数,这是怎么可能的 #include <stdio.h> int main(int argc, char const *argv[]) { int i=1,j=1; for(;; i+=j) { if(i>5) { break; } else

在下面的代码中,根据我所知,并没有给出测试表达式,但在我阅读时,有必要在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;
}
#包括
int main(int argc,char const*argv[]
{
int i=1,j=1;
对于(;;i+=j)
{
如果(i>5)
{
打破
}
其他的
{
j+=i;
}
printf(“\n%d”,j);
}
返回0;
}

因为规范允许省略零件。省略的循环条件意味着无限循环

说:

6.8.5.3对于声明
1. 声明

for ( clause-1 ; expression-2 ; expression-3 ) statement
行为如下:表达式-2是 在每次执行循环体之前进行评估。 表达式-3是 在每次执行循环体后作为空表达式求值。如果第1条是 声明中,它声明的任何标识符的范围都是声明的剩余部分,并且 整个循环,包括其他两个表达式;它是按执行顺序到达的 在第一次计算控制表达式之前。如果子句-1是表达式,则为 在第一次计算控制表达式之前作为无效表达式进行计算。158)
2. 第1条和表达式3均可省略。省略的表达式-2替换为 非零常数


没有问题:
i
j
在声明时初始化,
break
终止循环。这个代码太难看了。你不必有任何代码<代码>for(;)也可以,有时用于永不结束的循环。