【发布时间】:2023-07-22 04:46:01
【问题描述】:
最近遇到了对 EOF 字符控制台窗口的有趣解释。在某些运行 Windows 7 的机器上,代码 putchar (255) && putchar (-1) 显示为空格字符,有些则显示为 'a' 字符。第二个让我困惑。请告诉我,为什么会这样?
【问题讨论】:
最近遇到了对 EOF 字符控制台窗口的有趣解释。在某些运行 Windows 7 的机器上,代码 putchar (255) && putchar (-1) 显示为空格字符,有些则显示为 'a' 字符。第二个让我困惑。请告诉我,为什么会这样?
【问题讨论】:
EOF 不是字符,它更像是一个指示文件结束的信号(不是 Unix 信号)。值是否取决于实现,但保证不等于任何有效字符,通常是-1。
当您使用putchar(EOF) 或putchar(-1) 时,它会转换为unsigned char、255。但是255的ASCII值不是可打印字符,不同机器的结果不同。
【讨论】:
EOF 的实际值取决于系统(但通常为 -1,例如在 glibc 中)并且不等于任何有效的字符代码。
【讨论】:
EOF 的值等于任何字符代码。所以结果可以是世界上的任何东西。这么笼统地说 - 是的,它可能是由于你的编译器的实现方式而发生的。