Questions tagged «c»

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


4
为什么每个人都对标准C类型进行定义?
如果要使用Qt,则必须拥抱quint8,quint16依此类推。 如果要使用GLib,则必须欢迎guint8,guint16依此类推。 在Linux上有u32,s16依此类推。 uC / OS定义SINT32,UINT16依此类推。 而且,如果您必须结合使用这些东西,则最好为遇到麻烦做好准备。由于你的机器u32将被typedefD,共long并且quint32将typedef维超int,编译器会抱怨。 如果有的话,为什么每个人都这样做<stdint.h>?这是图书馆的某种传统吗?
103 c++  c  stdint 

12
为什么C字符文字是整型而不是char?
在C ++中,sizeof('a') == sizeof(char) == 1。这是直观的意义,因为'a'它是字符文字,并且sizeof(char) == 1由标准定义。 但是在C中,sizeof('a') == sizeof(int)。即,看来C字符文字实际上是整数。有人知道为什么吗?我可以找到很多关于此C怪癖的提及,但没有解释为什么它存在。
103 c++  c  char  sizeof 

7
C / C ++宏中的逗号
说我们有一个这样的宏 #define FOO(type,name) type name 我们可以使用像 FOO(int, int_var); 但并非总是那么简单: FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2 我们当然可以: typedef std::map<int, int> map_int_int_t; FOO(map_int_int_t, map_var); // OK 这不是很符合人体工程学。加上类型不兼容必须加以处理。任何想法如何解决宏?
103 c++  c  macros  c-preprocessor 


8
Printf宽度说明符可保持浮点值的精度
是否有一个printf宽度说明符可以应用于浮点说明符,该宽度说明符会自动将输出格式化为必要数量的有效数字,以便在回扫字符串时获取原始的浮点值? 例如,假设我float将a 打印到2小数点后的精度: float foobar = 0.9375; printf("%.2f", foobar); // prints out 0.94 当我扫描输出时0.94,我没有符合标准的保证,即会获得原始的0.9375浮点值(在此示例中,我可能不会)。 我希望有一种方法可以告诉printf您自动将浮点值打印到必要的有效位数,以确保可以将其扫描回传递给的原始值printf。 我可以使用其中的一些宏float.h来导出要传递的最大宽度printf,但是是否已有说明符可以自动打印到必要数量的有效数字 -或至少打印到最大宽度?

3
int32,int,int32_t,int8和int8_t之间的区别
我int32_t最近在C程序中遇到了数据类型。我知道,它存储32位,但不要int和int32这样做? 另外,我想char在程序中使用。我可以int8_t代替使用吗?有什么区别? 总结一下:C中的int32,int,int32_t,int8和int8_t有什么区别?
103 c  int  declaration 

7
在C中打印十六进制字符
我试图读取一行字符,然后打印出等价的十六进制字符。 例如,如果我有一个字符串,该字符串"0xc0 0xc0 abc123"的前2个字符c0用十六进制表示,其余字符abc123用ASCII表示,那么我应该得到 c0 c0 61 62 63 31 32 33 但是,printf使用%x给了我 ffffffc0 ffffffc0 61 62 63 31 32 33 没有,如何获得所需的输出"ffffff"?为什么只有c0(和80)具有ffffff,而其他字符却没有呢?
103 c  hex  printf 

4
-D_XOPEN_SOURCE是什么意思?
我最近遇到了一些代码,如果没有此arg,gcc将无法编译这些代码。我检查了gcc手册页,但没有找到此特定选项。我确实找到了XOPEN_SOURCE,但是对其作用的解释很少。 有人可以详细说明吗?我知道-D_XOPEN_SOURCE可以设置为不同的值,例如400,600,但什么做那些做?
103 c  gcc 

2
&&在无效* p = && abc;中是什么意思
我遇到了一段代码void *p = &&abc;。&&这里的意义是什么?我知道右值引用,但我认为&&在这种情况下使用的是不同的。&&表示什么void *p = &&abc;?
102 c++  c  gcc  operators 

10
编号后的“ f”
是什么在f后的数字表示?这是C还是Objective-C的?不将其加到常数上有什么区别吗? CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f); 你能解释为什么我不只是写: CGRect frame = CGRectMake(0, 0, 320, 50);

7
使程序运行缓慢
有什么方法可以通过更改Linux中的任何OS参数来减慢C ++程序的运行速度?这样,我想模拟一下,如果该特定程序恰好在速度较慢的计算机上运行,​​将会发生什么情况。 换句话说,对于该特定程序,速度更快的计算机应表现为速度较慢的计算机。
102 c++  c  linux  unix  ubuntu 

6
结构定义应该放在.h还是.c文件中?
我已经struct在标头中看到了s的完整定义,也看到了声明—一种方法比另一种方法有什么优势吗? 如果有什么不同,我通常会在 .h typedef struct s s_t; 编辑 为了清楚起见,选项是头文件中的声明和类中的定义,或者头文件中的声明和定义。两者都应该导致相同的可用性,即使是通过链接实现的,不是吗? 我看到很多几乎重复的内容,例如,这里没有完全匹配的内容。如果我在这方面错了,请纠正我。
102 c  header  struct 

6
snprintf和Visual Studio 2010
不幸的是,我无法在项目中使用VS 2010,并注意到下面的代码仍然无法使用非标准兼容编译器进行构建: #include <stdio.h> #include <stdlib.h> int main (void) { char buffer[512]; snprintf(buffer, sizeof(buffer), "SomeString"); return 0; } (编译失败,错误:C3861:'snprintf':找不到标识符) 我记得VS 2005就是这种情况,震惊地看到它仍然没有得到修复。 有谁知道微软是否有计划将其标准C库迁移到2010年?


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.