var*_*ara -1 c
解释为什么输出10会来?
main() { for(printf("1");!printf("0");printf("2")) { printf("hello"); } }
输出:
10
Bas*_*tch 5
根据其printf(3)手册页,该printf函数返回
printf
打印的字符数(不包括用于结束输出到字符串的空字节)
所以,初始化部分for运行一次:printf("1"); 它将1角色放入缓冲区stdout.然后评估条件,!printf("0");因为printf("0")它被评估,它将0字符放入缓冲区stdout并返回输出字符的数量,即1条件为假,并且for循环存在.
for
printf("1")
1
stdout
!printf("0");
printf("0")
0
最后,main退出程序,那时只stdout刷新缓冲区.
main
为了迂腐,当出于不太可能的原因,stdout无法成功编写时,您的程序会有不同的行为.
归档时间:
13 年,4 月 前
查看次数:
99 次
最近记录: