Questions tagged «c»

C是用于系统编程(OS和嵌入式),库,游戏和跨平台的通用编程语言。该标记应与ISO 9899标准(除非另有说明,最新版本9899:2018中定义的有关C语言的一般问题)一起使用-还要使用c89,c99,c11等标记特定于版本的请求。C与C ++截然不同,在没有合理理由的情况下,不应将其与C ++标记结合使用。

5
为什么未定义整数溢出定义行为,但没有定义整数溢出?
C和C ++标准都很好地定义了无符号整数溢出。例如,C99标准(§6.2.5/9)指出 涉及无符号操作数的计算永远不会溢出,因为无法用所得的无符号整数类型表示的结果的模数要比该所得类型可以表示的最大值大一模。 但是,两个标准都指出有符号整数溢出是未定义的行为。同样,根据C99标准(§3.4.3/1) 未定义行为的一个示例是整数溢出时的行为 是否存在这种差异的历史原因(甚至更好!)是技术原因?

9
结构填充和包装
考虑: struct mystruct_A { char a; int b; char c; } x; struct mystruct_B { int b; char a; } y; 结构的大小分别为12和8。 这些结构是被填充还是包装好? 填充或包装何时进行?
209 c  struct  structure  padding  packing 


15
C程序的执行时间
我有一个旨在在多个处理器上并行运行的C程序。我需要能够记录执行时间(可能在1秒到几分钟之间的任何时间)。我已经搜索了答案,但是它们似乎都建议使用该clock()函数,然后使用该函数来计算程序所花费的时钟数除以该Clocks_per_second值。 我不确定如何Clocks_per_second计算值? 在Java中,我只是以毫秒为单位来计算执行前后的当前时间。 C中有类似的东西吗?我看了一下,但是似乎找不到一种比第二种分辨率更好的方法。 我也知道可以使用探查器,但是我希望自己实现一个计时器。 谢谢
209 c  benchmarking 

30
为什么C这么快,为什么其他语言没有那么快?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4个月前关闭。 改善这个问题 在收听StackOverflow播客时,戳记不断出现,“真正的程序员”用C编写,而且C快得多,因为它“靠近机器”。将前一个断言放到另一篇文章中,C有什么特别之处,它可以使其比其他语言更快?或换种说法:是什么阻止其他语言能够编译为与C一样快的二进制文件?
208 c  performance 


8
有效,但在转换情况下毫无价值的语法?
通过一点错字,我偶然发现了这个构造: int main(void) { char foo = 'c'; switch(foo) { printf("Cant Touch This\n"); // This line is Unreachable case 'a': printf("A\n"); break; case 'b': printf("B\n"); break; case 'c': printf("C\n"); break; case 'd': printf("D\n"); break; } return 0; } 语句printf顶部的似乎switch是有效的,但也完全无法访问。 我得到了干净的编译,甚至没有关于无法到达代码的警告,但这似乎毫无意义。 编译器是否应将其标记为无法访问的代码? 这有什么用吗?

25
如果不是内存地址,C指针到底是什么?
在有关C的著名来源中,在讨论完&运算符后给出了以下信息: ...有点遗憾,因为[地址]仍然存在,因为它使那些不知道地址的人感到困惑,并误导了那些人:像指针一样思考指针通常会导致悲伤。 。 我读过的其他材料(我想从同样享有声誉的资料中)总是毫不掩饰地将指针和&运算符称为提供内存地址。我很乐意继续寻找问题的真实性,但是当有信誉的消息来源(KIND OF)不同意时,这会有些困难。 现在我有点困惑- 如果不是内存地址,那么指针到底是什么呢? 聚苯乙烯 作者后来说:...我将继续使用“住所”一词,因为发明一个不同的术语会更糟。



17
在C中通过引用传递
如果C不支持通过引用传递变量,为什么这样做有效? #include <stdio.h> void f(int *j) { (*j)++; } int main() { int i = 20; int *p = &i; f(p); printf("i = %d\n", i); return 0; } 输出: $ gcc -std=c99 test.c $ a.exe i = 21





By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.