For 循环中的多个 printf 作为初始化、条件和更新的一部分

syn*_*nth 4 c printf loops

谁能向我解释为什么它打印 32 以及它如何工作的总体概念?

#include <stdio.h>

int main()
{
    int a=1;
    for (printf ("3"); printf ("2"); printf ("1"))

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 8

适当的缩进会让它更清晰:

#include <stdio.h>

int main()
{
    int a=1;
    for (printf ("3"); printf ("2"); printf ("1"))
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以会发生以下情况:

  • a被初始化为1. 我不知道为什么这个变量存在,因为它从未被使用过。
  • for执行其初始化语句printf("3");。这打印3.
  • for评估其重复条件printf("2"). 这将打印2并返回已打印的字符数,即1
  • 由于条件为真,因此它进入循环体。
  • 身体执行return 0;。这从 中返回main(),从而结束循环。

由于循环结束,我们永远不会计算更新表达式 ,printf("1")因此它永远不会打印1。我们没有得到任何重复的内容。