gpt4 book ai didi

c - 存储在非 EOF 变量中的值是多少?

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:08 27 4
gpt4 key购买 nike

下面代码中比较的值是多少?

while ((c = getchar()) != EOF)
if ( c == '\n')

我知道 '\n' 是一个常量变量,因为有单引号。我知道它代表的是字符在ASCII表上的数值,对吧?那等于 110。但是

((c = getchar()) != EOF) 返回?

谢谢

最佳答案

关键是c必须是int:

int c;

while ((c = getchar()) != EOF) { char read_value = c; /* ... */ }

假定 int 可以容纳比 char 更多的值,或者至少比系统的窄多字节编码使用更多的值*,并且 getchar 在读取更多数据失败时返回一个特殊常量 EOF。否则,保证您可以将 c 转换为 char 并获得所读取字符的值。

c 本身声明为 char 是一个常见的错误,在这种情况下,循环可能永远不会终止,因为您可能无法捕获特殊值EOF,否则将有一个与 (char)EOF 无法区分的完全有效的字符。

*) 例如,如果 charint 在给定平台上都是 32 位宽,那将是完美的,只要,例如,窄流只能返回值在 [-128, 128) 范围内的单元,您可以使用 -200 作为 EOF

关于c - 存储在非 EOF 变量中的值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14247768/

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