当我想弄清楚 getchar() 实际做了什么时,这个小片段loop
确实让我感到困惑。
int i;
int c;
for (i = 0; i < 100; i++) {
c = getchar();
printf("%d\n", c);
printf("i is %d\n", i);
}
输入输出为:
input: 1
output:
49
i is 0
10
i is 1
input: 12
output:
49
i is 2
50
i is 3
10
i is 4
正如我之前所假设的,如果我输入 1 个字符,getchar() 应该将其提取出来,putchar() 会打印它,然后程序进入下一个循环并等待我的下一个输入。但结果似乎表明代码没有按我的预期工作:
- 输出数字是什么意思?
- 总是有一个额外的循环打印
10
,这是什么10
意思?如果这意味着EOF
,为什么在循环内替换后c = getchar();
,c = (getchar() != EOF);
代码总是打印出1
哪个,正如我所料,应该0
在最后一个循环中打印一个?
非常感谢!