gpt4 book ai didi

function - 为什么 'fputc' 使用 INT 作为参数而不是 CHAR?

转载 作者:行者123 更新时间:2023-12-02 04:47:14 27 4
gpt4 key购买 nike

标准 C 库:

int fputc(int c , FILE *stream);

而且这样的行为发生过很多次,例如:

    int putc(int c, FILE *stream);
int putchar(int c);

为什么不按实际情况使用 CHAR?如果必须使用 INT,什么时候应该使用 INT 而不是 CHAR?

最佳答案

可能(在我看来,因为早期 C 背后的许多基本原理已经随着时间的流逝而消失),它只是简单地反射(reflect)了 fgetc< 中使用的类型 类型的函数必须能够返回任何真实字符加上 EOF 特殊字符。 fgetc 函数将下一个字符转换为 int,并使用一个特殊的标记值 EOF 来指示流的结尾。

为此,他们需要更宽的 int 类型,因为 char 不够大,无法容纳所有可能的字符再加上一件事。

而且,由于 C 的开发人员似乎更喜欢一种相当极简主义的代码方法,因此他们使用相同的类型是有道理的,以允许这样的代码:

filecopy(ifp, ofp)
FILE *ifp;
FILE *ofp;
{
int c;
while ((c = fgetc (ifp)) != EOF)
fputc (c, ofp);
}

关于function - 为什么 'fputc' 使用 INT 作为参数而不是 CHAR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31907589/

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