-1

解释为什么输出 10 会来?

main()
{

   for(printf("1");!printf("0");printf("2"))
    {
    printf("hello");
    }   
}

输出:

10 
4

2 回答 2

5

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

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

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

最后,main正在退出程序,当时只有stdout缓冲区被刷新。

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

于 2012-10-03T05:15:42.053 回答
0

因为在 printf("1") 它按原样执行语句。然后 printf("0") 在屏幕上打印 0 并返回一个值 1。当你否定它时,它在 C 中给出一个等于 false 的值。所以 for 循环满足其结束条件并退出。

于 2012-10-03T05:22:04.980 回答