解释为什么输出10会来?
main()
{
for(printf("1");!printf("0");printf("2"))
{
printf("hello");
}
}
输出:
10
答案 0 :(得分:5)
根据其printf(3)手册页,printf
函数返回
打印的字符数(不包括用于结束输出到字符串的空字节)
所以,for
的初始化部分运行一次:printf("1")
;它将1
字符放入stdout
的缓冲区中。然后评估条件!printf("0");
,因为printf("0")
被评估,它将0
字符放入stdout
的缓冲区并返回输出字符数,即1
所以条件是假的,并且for
循环存在。
最后,main
退出程序,那时只刷新stdout
个缓冲区。
为了迂腐,当出于不太可能的原因,stdout
无法成功写入时,您的程序会有不同的行为。
答案 1 :(得分:0)
因为在printf(“1”)它按原样执行语句。 然后printf(“0”)在屏幕上打印0并返回值1.当你否定它时,它在C中给出一个等于false的值。所以for循环满足其结束条件并退出。