277得票6回答
整数除法的行为是什么?

例如,int result; result = 125/100; 或者result = 43/100; 结果是否总是除法的下取整?定义的行为是什么?

166得票5回答
C、C99、ANSI C和GNU C之间有什么区别?

我开始在codechef上进行编程练习,但被C和C99之间的区别混淆了。这里的C是什么意思?是指C89吗?请查看此提交页面底部的语言选择。它包含C和C99两种。 我在网上找到了一个叫做GNU C的东西。linux/unix系统有不同于其他系统的C吗?它们是否符合ANSI的C标准?我还在一些地...

145得票8回答
C语言中变量声明的位置

我曾经以为在C语言中,所有变量都必须在函数开头被声明。我知道在C99中,规则与C++相同,但是C89 / ANSI C的变量声明放置规则是什么? 以下代码可以成功编译 gcc -std=c89 和 gcc -ansi:#include <stdio.h> int main() {...

131得票3回答
以下程序在C89模式下编译输出"C89",在C99模式下编译输出"C99",原因是什么?

我在网上找到了这个C程序:#include <stdio.h> int main(){ printf("C%d\n",(int)(90-(-4.5//**/ -4.5))); return 0; } 这个程序有趣的地方在于,当以C89模式编译和运行时,...

123得票8回答
“struct hack”是否属于技术上未定义行为?

我正在询问的是众所周知的“结构体最后一个成员具有可变长度”的技巧。它大致如下: struct T { int len; char s[1]; }; struct T *p = malloc(sizeof(struct T) + 100); p->len = 100; ...

109得票11回答
为什么应该使用strncpy而不是strcpy?

编辑:我已经添加了示例的来源。 我发现了这个示例:char source[MAX] = "123456789"; char source1[MAX] = "123456789"; char destination[MAX] = "abcdefg"; char destination1[MAX...

105得票5回答
一个人在哪里可以找到C89/C90标准的PDF格式?

我正在寻找免费的C89/C90标准副本,但是我无法在任何地方找到它!为什么这么难找呢? C99和C11标准非常容易在互联网上获得副本。即使在Stack Overflow的问题Where do I find the current C or C++ standard documents?和Th...

97得票29回答
在嵌入式开发中,使用C语言而不是C++是否有任何理由?

问题 我在我的硬件上有两个编译器,分别是C++和C89。 我正在考虑使用带类但不使用多态性(以避免虚函数表)的C++。 我想使用C++的主要原因是: 我更喜欢使用“inline”函数而不是宏定义。 我想使用名称空间来避免代码混乱。 我认为C++更加类型安全,主要是因为有模板和详细的强制...

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

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

55得票6回答
C89、C90或C99版本中是否要求所有函数都有原型?

为了真正符合标准,C语言中的所有函数(除了main函数)是否都必须有原型,即使它们只在同一翻译单元中定义后使用?