作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
全部。我不确定在这里问这样一个“简单”的问题是否合适,但实际上这对我来说很难:[,这是问题和一些c代码:
main()
{
int c, i;
for (i = 0; (c = getchar()) != EOF && c != '\n'; ++i)
printf("%d", i);
if (c == '\n')
printf("%d", i);
}
执行该程序后,当我输入“abc\n”时,程序将返回:
0
1
2
3
我想知道为什么结果不是
0
1
2
因为当c == '\n'时,没有任何语句使i加1。这是我的想法,我一定是错的,你能告诉我我错在哪里吗?谢谢!
最佳答案
for
循环中的操作顺序是:
i = 0
(c = getchar()) != EOF && c != '\n' // c is set to 'a'
printf("%d", i) // displays 0
++i // i == 1
(c = getchar()) != EOF && c != '\n' // c is set to 'b'
printf("%d", i) // displays 1
++i // i == 2
(c = getchar()) != EOF && c != '\n' // c is set to 'c'
printf("%d", i) // displays 2
++i // i == 3
(c = getchar()) != EOF && c != '\n' // c is set to '\n'
// the loop exits
因此,for
循环之后的 printf()
会打印 i
的最新值,即 3。
关于c - 一道c编程题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762429/
我是一名优秀的程序员,十分优秀!