Questions tagged «c»

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





19
一起计算正弦和余弦的最快方法是什么?
我想同时计算一个值的正弦和余弦(例如,创建旋转矩阵)。当然,我可以像一样一个接一个地分别计算它们a = cos(x); b = sin(x);,但是我想知道在同时使用两个值时是否有更快的方法。 编辑: 总结到目前为止的答案: 弗拉德说,那是asm命令FSINCOS计算这两个(几乎在FSIN单独调用的同时) 像志注意到的那样,这种优化有时已经由编译器完成(使用优化标志时)。 caf指出,函数sincos和sincosf可能是可用的,可以通过直接包括math.h 关于使用查找表的 tanascius方法存在争议。(但是,在我的计算机上和在基准测试情况下,它的运行速度比以前快3倍sincos 32位浮点的精度几乎。) 乔尔·古德温(Joel Goodwin)链接了一种极快的近似技术的有趣方法,具有很高的准确度(对我来说,这比查表还要快)
100 c#  c++  c  algorithm  math 

4
竞技场一词与记忆有关的含义是什么?
我正在读一本关于内存的编程概念书。在后面的章节中,作者大量使用了arena一词,但从未定义。我搜索了单词的含义以及它与记忆的关系,但没有发现任何问题。以下是作者使用该术语的几种情况: “序列化的下一个示例包含了一种从特定场所进行的称为内存分配的策略。” “ ...在处理内存泄漏或从特定场所进行分配时,这很有用。” “ ...如果我们想重新分配内存,那么我们将重新分配整个竞技场。” 作者在一章中使用了100次以上的术语。词汇表中的唯一定义是: 从竞技场分配 -先分配竞技场,然后由程序本身(而不是由进程内存管理器)管理竞技场内的分配/取消分配的技术;用于复杂数据结构和对象的压缩和序列化,或用于安全关键和/或容错系统中的内存管理。 在这些情况下,谁能为我定义竞技场?

4
是无符号整数减法定义的行为吗?
我遇到了某人的代码,该人似乎认为当结果为负数时,从另一个相同类型的整数中减去无符号整数是有问题的。这样的代码即使在大多数架构上都能正常工作,也是不正确的。 unsigned int To, Tf; To = getcounter(); while (1) { Tf = getcounter(); if ((Tf-To) >= TIME_LIMIT) { break; } } 这是我能从C标准中找到的唯一含糊的相关报价。 涉及无符号操作数的计算永远不能溢出,因为无法用所得的无符号整数类型表示的结果的模数要比该所得的类型可以表示的最大值大一模。 我想可以用这个引号来表示,当右操作数较大时,该操作将被调整为在取模截数的上下文中有意义。 即 为0x0000 - 0x0001的== 0X 1 0000 - 0x0001的== 0xFFFF的 与使用依赖于实现的签名语义相反: 0x0000-0x0001 ==(无符号)(0 + -1)==(0xFFFF也是0xFFFE或0x8001) 哪种解释正确?完全定义了吗?

7
您如何在C中制作结构数组?
我正在尝试制作一系列结构,其中每个结构都代表一个天体。 我对结构没有太多的经验,这就是为什么我决定尝试使用它们而不是一堆数组的原因。但是,我不断遇到许多不同的错误。我试图实现在各种线程和StackOverflow上看到的技术(例如C和C中的结构体数组-初始化结构体数组)),但是并不是所有的人都是适用的。 对于那些到目前为止已经读过的人的更多信息:我不需要任何这些都是动态的,我事先知道/定义了所有内容的大小。我还需要将其作为一个全局数组,因为我正在使用几种定义了自变量的方法(即GLUT方法)来访问它。 这就是我在标头中定义结构的方式: struct body { double p[3];//position double v[3];//velocity double a[3];//acceleration double radius; double mass; }; 在定义结构的内部之前,我还有一个要定义的其他全局变量的列表,其中一个是该结构的数组(基本上,如果我不太清楚,请看下面的代码高于上述内容): struct body bodies[n]; 请注意,n这是我合理定义的内容(即#define n 1)。 我以几种不同的方法使用此数组,但是最简单,最不占用空间的是我的main的简化形式。在这里,我初始化每个结构中的所有变量,只是在以某种方式修改它们之前设置某些变量: int a, b; for(a = 0; a < n; a++) { for(b = 0; b < 3; b++) { bodies[a].p[b] = 0; bodies[a].v[b] = …
100 c  arrays  struct 


6
如何在Swift中使用SCNetworkReachability
我正在尝试将此代码段转换为Swift。由于某些困难,我正在努力下车。 - (BOOL) connectedToNetwork { // Create zero addy struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); zeroAddress.sin_len = sizeof(zeroAddress); zeroAddress.sin_family = AF_INET; // Recover reachability flags SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); SCNetworkReachabilityFlags flags; BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); CFRelease(defaultRouteReachability); if (!didRetrieveFlags) { return NO; } BOOL isReachable = flags & …
99 ios  c  struct  swift  reachability 

3
此人如何用Microsoft Paint编码“ Hello World”?
我刚刚在过去几天中看到了这一点,无法弄清楚它是如何工作的。我谈论的视频在这里: 这是这个堆栈溢出问题的最高评价的答案:为什么该程序被三个编译器拒绝? 该位图如何显示“ Hello World”的C ++程序?
99 c++  c  paint 


9
如何使用透明背景制作OpenGL渲染上下文?
渲染上下文通常在背景上具有纯色(黑色或其他颜色,请参见下图): 我想知道是否可以设置一个没有装饰且具有透明背景的窗口,同时允许我在其上渲染OpenGL。 这会使人产生三角形在屏幕上浮动的错觉。透明的背景应该可以让您看到桌面或背后的其他应用程序。 您能举例说明源代码吗? 平台:Windows(仅Win32)

8
缩进#define
我知道#defines等通常从不缩进。为什么? 目前,我正在使用某些代码,其中包含#defines,#ifdefs,#elses,#endifs等的可怕混合。所有这些通常都与普通C代码混合在一起。#defines 的非缩进使得它们难以阅读。缩进代码与非缩进#defines的混合是一场噩梦。 不缩进有什么好处#define?如果我缩进他们,这会让我成为坏人吗?这不是更好吗? #ifdef SDCC #if DEBUGGING == 1 #if defined (pic18f2480) #define FLASH_MEMORY_END 0x3DC0 #elif defined (pic18f2580) #define FLASH_MEMORY_END 0x7DC0 #else #error "Can't set up flash memory end!" #endif #else #if defined (pic18f2480) #define FLASH_MEMORY_END 0x4000 #elif defined (pic18f2580) #define FLASH_MEMORY_END 0x8000 #else #error "Can't set up flash …

12
C ++预处理器__VA_ARGS__参数数量
我在网上找不到答案的简单问题。在可变参数宏中,如何找到参数个数?如果可以的话,我对Boost预处理器还可以。 如果有什么不同,我试图将可变数量的宏参数转换为增强预处理程序序列,列表或数组,以进行进一步的处理。

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.