jiaheng 发表于 2021-8-25 09:23:16

S1E20课后习题2,getchar()提问

如题,代码如下:
0      char slogan;
1      int i, j, ch, min, max, temp;
2
3      for (i = 0; i < NUM; i++)
4      {
5                printf("请输入%d句话:", i+1);
6                for (j = 0; (ch = getchar()) != '\n'; j++)
7                {
8                        slogan = ch;
9                }
10               slogan = '\0';
11       }
第10行,在循环输入后,不应该是slogan = ch; 吗?
为什么slogan呢?难道即使条件不成立, j++ 也继续运行一次?

大马强 发表于 2021-8-25 09:23:17

1.那我要倒问你为啥要slogan = ch;,你可以看作为一维数组的赋值的,条件不满足,j不会++
2.int ch将其转换成ascii码表上对应的十进制

jiaheng 发表于 2021-8-25 09:24:55

还有 getchar() 返回的不是字符char吗?为什么int ch 不会报错,可以正常运行?

client_2233 发表于 2021-8-25 09:54:39

你要'/n'吗?

client_2233 发表于 2021-8-25 09:56:06

条件不成立直接退出循环啊

jiaheng 发表于 2021-8-25 10:07:32

大马强 发表于 2021-8-25 09:40
1.那我要倒问你为啥要slogan = ch;,你可以看作为一维数组的赋值的,条件不满足,j不会++
2.int ch将 ...

知道了,是上一轮循环的时候j++已经生效了,所以这次循环判断失败直接退出。"fishc\n", 'c'的时候j++。
页: [1]
查看完整版本: S1E20课后习题2,getchar()提问