对于C中的循环格式

kar*_*t18 3 c for-loop

我想知道这个程序是如何执行的,并没有抛出任何错误.

void main( ) 
{ 
    clrscr();
    int i ; 
    for ( i = 1 ; i <= 5 ; printf ( "\n%c", 65 ) ) ; 
        i++ ;
    getch(); 
} 
Run Code Online (Sandbox Code Playgroud)

循环继续打印A.for循环的格式是

for(initialize value; test counter; increment value)
{
    do this;
    and this;
    and this;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是printf("\n%c",65)如何增加值?

hmj*_*mjd 15

结果;之后的尾随没有在内部递增,导致无限循环.for()ifor

这个:

for ( i = 1 ; i <= 5 ; printf ( "\n%c", 65 ) ) ; 
    i++ ;
Run Code Online (Sandbox Code Playgroud)

相当于:

for ( i = 1 ; i <= 5 ; printf ( "\n%c", 65 ) ) {} /* Empty loop body. */
i++ ;
Run Code Online (Sandbox Code Playgroud)

i++从未达到.要更正,请删除尾随;.这将是更清晰的使用i++作为迭代式for循环,而不是printf()i不需要循环体的外面存在:

for (int i = 1; i <= 5; i++)
{
    printf ( "\n%c", 65 );
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何printf("\n %c", 65)增加价值?

printf()返回写入的字符数,因此i如果您愿意,可以使用它来增加,但是有必要将终止条件更改为占用\n字符:

for (int i = 1; i <= 10; i+= printf("\n%c", 65));
Run Code Online (Sandbox Code Playgroud)

然而,这不如之前的建议清楚.