19得票2回答
C89中有效的程序,在C99中无效

在 C99 中引入或删除的特性/语义是否会使一个在 C89 中写的良好定义程序变得: 无效(即根据 C99 标准无法编译) 编译,但具有不同的语义。 我目前的研究结果,关于明显无效的程序: 隐式 int(C89 §3.5.2) 隐式函数声明(C89 §3.3.2.2) 不从期望返回...

21得票4回答
为什么在switch结构内不能使用“goto default;”或“goto case x;”语句?

C11第6.8.1节或C99,或C89的第3.6.1节似乎都表明default和case x(其中x是一些常量表达式)都是带标签的语句示例,以及适用于与goto一起使用的identifier:样式标签。 我知道我可以直接在default:或case x:标签后面放置一个identifier:...

14得票2回答
如何获取errno值的错误信息(C语言)?

我该如何获取errno值的错误消息(C语言)?例如,我可以编写这样的文件(errno_messages.h):#include <errno.h> char* get_errno_message(void){ switch (errno) { case 0: ...

80得票4回答
两个空指针相减的行为是否被定义?

如果两个非空指针变量均具有NULL值,它们之间的差异是否被定义(根据C99和/或C++98)? 例如,假设我有一个类似于以下结构的缓冲区:struct buf { char *buf; char *pwrite; char *pread; } ex; 假设ex.buf指向一个数组...

7得票4回答
在 while 循环中使用 scanf 函数

我正在尝试为编程作业格式化以空格分隔的用户输入。该输入基本上由任意数量的表达式组成,包括“L 整数 整数 整数 整数”和“C 整数 整数 整数”等。例如:“L 1 1 5 7 C 4 5 3”。到目前为止,我已经成功提取了初始字符的整数,并可以使用scanf函数迭代遍历字符串。 char a...

20得票2回答
ANSI C或ISO C是否规定了-5%10应该是什么?

我记得 ANSI C 没有规定当模运算符的任一操作数为负数时应返回什么值(只是要保持一致)。后来是否有规定,还是一直都有规定而我记错了?

17得票2回答
为什么 ANSI 只指定外部标识符中最小的有效字符数为六个?(涉及 IT 技术)

我有一个问题,涉及第一份《美国国家标准编程语言-C》(也称ANSI/ISO 9899-1990、ISO/IEC 9899.1990 (E)、C89等)中第5.2.4.1节“翻译限制”。简单来说,这是第一个ANSI C标准。该标准说了什么令人感到奇怪?它声名狼藉地指出,符合C标准的编译器只需要处...

15得票2回答
在C89(也称为ANSI C)中省略return语句是否未定义行为?

考虑以下基本示例: #include <stdio.h> int main(void) { printf("Hi there!\n"); } 我需要处理一下这段关于C89的问题吗?我尝试从这个问题中获得一些信息,但是最受欢迎的答案声称它是实现定义的,在这里绝对没有U...

44得票7回答
"int"和"int_fast16_t"有什么区别?

据我了解,C规范规定类型int应该是目标平台上至少包含16位的最高效类型。 那C99对于int_fast16_t的定义难道不也是这样吗? 也许他们之所以把它放在那里只是为了保持一致性,因为其他的int_fastXX_t也是必需的吗? 更新: 总结以下下面的讨论: 我的问题在很多方面都...

8得票3回答
ANSI C中的非缓冲I/O

出于教育和编程练习的考虑,我想编写一个简单的库,可以处理原始键盘输入,并在“实时”输出到终端。 我希望尽可能地坚持使用ansi C,但我不知道从何处开始。我进行了几次谷歌搜索,99%的结果都使用库,或者是为C ++编写的。 我真的很想让它在Windows上运行,然后在有时间的时候将其移植到...