解释为什么输出10将进入c程序

var*_*ara -1 c

解释为什么输出10会来?

main()
{

   for(printf("1");!printf("0");printf("2"))
    {
    printf("hello");
    }   
}
Run Code Online (Sandbox Code Playgroud)

输出:

10 
Run Code Online (Sandbox Code Playgroud)

Bas*_*tch 5

根据其printf(3)手册页,该printf函数返回

打印的字符数(不包括用于结束输出到字符串的空字节)

所以,初始化部分for运行一次:printf("1"); 它将1角色放入缓冲区stdout.然后评估条件,!printf("0");因为printf("0")它被评估,它将0字符放入缓冲区stdout并返回输出字符的数量,即1条件为假,并且for循环存在.

最后,main退出程序,那时只stdout刷新缓冲区.

为了迂腐,当出于不太可能的原因,stdout无法成功编写时,您的程序会有不同的行为.