为什么必须使用变量来保存getchar';s返回值是否声明为int?
我是C编程语言的初学者,最近我学习了为什么必须使用变量来保存getchar';s返回值是否声明为int?,c,function,C,Function,我是C编程语言的初学者,最近我学习了getchar函数,它将从控制台或文件中接收字符,在键入时立即显示它,我们需要按Enter键继续 它返回它们读取的无符号字符。如果遇到文件结尾或错误getchar()函数返回EOF 我的问题是,当它返回unsigned char时,为什么它的返回值存储在int变量中 请帮助我。阅读此链接: 这里写着: 如果将字符I/O函数返回的值与EOF进行比较,则不要将该值转换为char。一旦这些函数的返回值被转换为字符类型,字符值可能与EOF无法区分。此外,如果sizeo
getchar
函数,它将从控制台或文件中接收字符,在键入时立即显示它,我们需要按Enter键继续
它返回它们读取的无符号字符。如果遇到文件结尾或错误getchar()
函数返回EOF
我的问题是,当它返回unsigned char
时,为什么它的返回值存储在int
变量中
请帮助我。阅读此链接:
这里写着:
如果将字符I/O函数返回的值与EOF进行比较,则不要将该值转换为char。一旦这些函数的返回值被转换为字符类型,字符值可能与EOF无法区分。此外,如果sizeof(int)=sizeof(char),则用于捕获返回值的int可能与EOF无法区分。有关sizeof(int)==sizeof(char)的更多详细信息,请参见FIO35-C。使用feof()和ferror()在sizeof(int)==sizeof(char)时检测文件结束和文件错误。有关正确使用字符类型的更多信息,请参见STR00-C。使用适当的类型表示字符
此规则适用于所有字符I/O函数的使用。正是因为该EOF值。由于文件中的字符可以是任何可能的字符值,包括C字符串用于终止的空字符,getchar()
必须使用较大的整数类型来添加EOF值
为此,它恰好使用int,但它可以使用至少9位的任何类型。返回类型为int以适应特殊值EOF
EOF是一个宏,它可以扩展为int类型的整数常量表达式和依赖于实现的负值,但通常为-1。一个好链接:另请参见。可能的详细信息重复:“文件中的字符可能是任何可能的字符值”-->字符可能有许多可能的值,但从getchar()返回的值
是字符的无符号字符
值,而不是其字符
值。