gpt4 book ai didi

c - 为什么需要 int 类型来处理 EOF 和 getchar() 的返回?

转载 作者:行者123 更新时间:2023-11-30 20:50:12 24 4
gpt4 key购买 nike

正如书中所写-

问题在于区分输入的结尾和有效数据。解决方案是,当没有更多输入时,getchar 返回一个独特的值,该值不能与任何实际字符混淆。该值称为 EOF,即“文件结束”。我们必须将 c 声明为一个足够大的类型,以容纳 getchar 返回的任何值。我们不能使用 char,因为除了任何可能的 char 之外,c 还必须足够大才能容纳 EOF。因此我们使用 int。

main()
{
int c;
c = getchar();
while(c != EOF) {
putchar(c);
c = getchar();
}
}

我无法理解使用 int 而不是 char 的实际原因。 EOF 将返回无法存储在 char 中的内容。

最佳答案

一个char可以容纳256个不同的值(0到255)。如果 EOFchar,则 EOF 的值将是 0 到 255 之间的某个值,这意味着将有 一个个你无法阅读的字符。因此,EOF 的值不能介于 0 和 255 之间,这意味着它无法装入 char,这意味着它的类型必须大于 char,例如 int

换句话说,EOF不是char,我们不想将其存储在char中>。它的唯一目的是使程序能够检测到已尝试读取文件末尾之外的一个字符。

或者换句话说:假设 EOF 被定义为 255,因此适合 char。现在假设 getchar 返回值 255(即 EOF)。现在这个值代表什么?是 EOF 还是字符 255?

关于c - 为什么需要 int 类型来处理 EOF 和 getchar() 的返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48870708/

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