gpt4 book ai didi

c - 一道c编程题

转载 作者:行者123 更新时间:2023-11-30 18:06:14 26 4
gpt4 key购买 nike

全部。我不确定在这里问这样一个“简单”的问题是否合适,但实际上这对我来说很难:[,这是问题和一些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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com