解释为什么输出10会出现?解释为什么输出10会出现在c程序中
main()
{
for(printf("1");!printf("0");printf("2"))
{
printf("hello");
}
}
输出:
10
解释为什么输出10会出现?解释为什么输出10会出现在c程序中
main()
{
for(printf("1");!printf("0");printf("2"))
{
printf("hello");
}
}
输出:
10
据其printf(3)手册页,所述printf
函数返回
打印的字符的数目(不包括用于结束输出为字符串的空字节)
所以, for
的初始化部分运行一次:printf("1")
;它将1
字符放入stdout
的缓冲区中。然后评估条件!printf("0");
,因为printf("0")
被评估,它将0
字符放入stdout
的缓冲区中并返回输出字符的数量,即1
,因此条件为假,并且存在for
循环。
最后,main
正在退出程序,那时只有stdout
缓冲区被刷新。
要迂回,您的程序会出现不同的行为,因为不太可能的原因,stdout
无法成功写入。
因为在printf(“1”)它会按原样执行语句。 然后printf(“0”)在屏幕上打印0并返回值1.当您否定它时,它会在C中给出一个等于false的值,以便for循环满足其结束条件并退出。
阅读关于(;;)如何工作的信息。谷歌提出的[第一个链接](http://cprogramminglanguage.net/c-for-loop-statement.aspx)是合理的。 –
想想for循环是由哪些部分组成的,以及'!printf()'的计算结果。 – chris
我没有回答这个问题,但我不明白你为什么这么问。如果你找不到(也就是寻找和搜索)答案,你就不应该编程并做一些其他事情。你的老师可能想要锻炼你的技能(所以要求帮助会适得其反)。 –