gpt4 book ai didi

c - EOF 保证为 -1 吗?

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

在用 C 语言编写代码时,交替使用 -1EOF 是一种很好的风格吗?标准是否保证 EOF-1?还是定义了值(value)实现?

例如,如果一个函数在某些情况下返回EOF,那么测试函数是否返回-1是否是一种好的风格?

如果函数在某些情况下返回 -1,那么测试函数是否返回 EOF 是一种好的风格吗?

最佳答案

不,EOF最肯定不能保证是-1 .

这是一个宏,定义在<stdio.h>中,

which expands to an integer constant expression, with type int and a negative value, that is returned by several functions to indicate end-of-file, that is, no more input from a stream

(引用自 ISO C 标准的第 7.21.1 节)。

我从未见过 EOF 的实现具有 -1 以外的值-- 但后来我懒得去检查了。

使用 EOF而不是文字 -1避免让您的代码在选择不同负值的实现上中断,但更重要的是,它对读者来说很清楚。如果我看到 -1在您的代码中,我不确定您为什么选择该特定值。如果我看到 EOF ,我很清楚你的意思。 (即使标准要求 EOF 具有值 -1,这也适用。)

至于一般的“魔数(Magic Number)”,有些时候它们是不可避免的。评论中的一个例子:getopt功能是documented返回 -1在某些情况下,您应该将其结果与 -1 进行比较,而不是EOF .尽可能避免使用魔数(Magic Number),但如果文档使用了它们,您就很难使用它们了。

关于c - EOF 保证为 -1 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22122539/

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