为什么用于保存getchar的返回值的变量必须声明为int?

May*_*ari 16 c function

我是C编程语言的初学者,最近我研究了getchar函数,它将从控制台或文件中接受一个字符,在键入时立即显示它,我们需要Enter按键才能继续.

它返回unsigned char他们阅读的内容.如果遇到文件结束或错误,则getchar()返回EOF.

我的问题是,当它返回时unsigned char,为什么它的返回值存储在int变量中?

请帮我.

cma*_*ter 18

正是因为那个EOF值.因为文件中的char可能是任何可能的char值,包括C-strings用于终止的空字符,所以getchar()必须使用更大的整数类型来添加EOF值.

它恰好用于此目的,但它可以使用至少9位的任何类型.

  • Detail: "a char in a file may be any possible char value" --> 一个字符可能有很多可能的值,但是从`getchar()`返回的值是一个字符的`unsigned char`值,而不是它的`char ` 值。 (2认同)