Questions tagged «c»

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

16
从标准输入中捕获字符,而无需等待按下回车键
我永远不记得我是怎么做的,因为它对我来说很少出现。但是在C或C ++中,什么是从标准输入中读取字符而不等待换行符(按Enter键)的最佳方法。 理想情况下,它也不会将输入字符回显到屏幕上。我只想捕获击键而不影响控制台屏幕。
174 c++  c  inputstream 



29
人们对C指针有什么困难?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心寻求指导。 7年前关闭。 从这里发布的问题数量来看,很明显,人们在使用指针和指针算术时会遇到一些根本性的问题。 我很好奇为什么。它们从未真正给我造成重大问题(尽管我是在新石器时代第一次了解它们的)。为了对这些问题写出更好的答案,我想知道人们发现困难之处。 因此,如果您在使用指针时遇到困难,或者您最近却突然“明白了”,那么指针的哪些方面导致了您的问题?
172 c  pointers 


9
extern关键字对C函数的影响
在C语言中,我没有注意到extern函数声明之前使用的关键字的任何作用。起初,我认为extern int f();在单个文件中定义时会迫使您在文件范围之外实现它。但是我发现两者: extern int f(); int f() {return 0;} 和 extern int f() {return 0;} 编译就很好,没有来自gcc的警告。我用过gcc -Wall -ansi; 它甚至不会接受//评论。 使用extern before函数定义有什么影响吗?还是只是一个可选关键字,对功能没有副作用。 在后一种情况下,我不明白为什么标准设计者选择用多余的关键字来填充语法。 编辑:为澄清起见,我知道externin变量的用法,但我只问externin 函数。
171 c  syntax  standards 


9
从C中的函数返回`struct`
今天,我在教学上几个朋友如何用C struct秒。其中一个询问您是否可以struct从函数中返回a ,我回答道:“不!您将返回指向动态malloced struct的指针。” 来自主要从事C ++工作的人,我期望无法struct通过值返回s。在C ++中,您可以operator =为您的对象重载,并且完全有意义的是有一个函数可以按值返回对象。但是,在C语言中,您没有该选项,因此让我开始思考编译器的实际作用。考虑以下: struct MyObj{ double x, y; }; struct MyObj foo(){ struct MyObj a; a.x = 10; a.y = 10; return a; } int main () { struct MyObj a; a = foo(); // This DOES work struct b = a; // This does …
171 c 


13
在C ++中,我是否要为自己不吃的东西付费?
让我们考虑以下C和C ++的世界示例: main.c #include <stdio.h> int main() { printf("Hello world\n"); return 0; } main.cpp #include <iostream> int main() { std::cout<<"Hello world"<<std::endl; return 0; } 当我将它们编译为汇编时,C代码的大小只有9行(gcc -O3): .LC0: .string "Hello world" main: sub rsp, 8 mov edi, OFFSET FLAT:.LC0 call puts xor eax, eax add rsp, 8 ret 但是C ++代码的大小为22行(g++ -O3): …
170 c++  c 

2
为什么在使用rand()时会得到这种特殊的颜色模式?
我试图创建一个图像文件,如下所示: uint8_t raw_r[pixel_width][pixel_height]; uint8_t raw_g[pixel_width][pixel_height]; uint8_t raw_b[pixel_width][pixel_height]; uint8_t blue(uint32_t x, uint32_t y) { return (rand()%2)? (x+y)%rand() : ((x*y%1024)%rand())%2 ? (x-y)%rand() : rand(); } uint8_t green(uint32_t x, uint32_t y) { return (rand()%2)? (x-y)%rand() : ((x*y%1024)%rand())%2 ? (x+y)%rand() : rand(); } uint8_t red(uint32_t x, uint32_t y) { return (rand()%2)? (y-x)%rand() : ((x*y%1024)%rand())%2 …
170 c  image  random 



2
此代码如何生成印度地图?
此代码打印印度地图。它是如何工作的? #include <stdio.h> main() { int a,b,c; int count = 1; for (b=c=10;a="- FIGURE?, UMKC,XYZHello Folks,\ TFy!QJu ROo TNn(ROo)SLq SLq ULo+\ UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\ NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\ HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\ T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\ Hq!WFs XDt!" [b+++21]; ) for(; a-- > 64 ; ) putchar ( ++c=='Z' ? c = c/ 9:33^b&1); return …
169 c  obfuscation 

1
将双精度整数舍入为32位int的快速方法
在阅读Lua的源代码时,我注意到Lua使用a将a macro舍double入为32位int。我提取了macro,它看起来像这样: union i_cast {double d; int i[2]}; #define double2int(i, d, t) \ {volatile union i_cast u; u.d = (d) + 6755399441055744.0; \ (i) = (t)u.i[ENDIANLOC];} 这里ENDIANLOC定义为endianness,0对于小端,1对于大端。Lua会小心处理字节顺序。t代表整数类型,例如int或unsigned int。 我做了一些研究,有一个更简单的格式macro使用了相同的想法: #define double2int(i, d) \ {double t = ((d) + 6755399441055744.0); i = *((int *)(&t));} 或采用C ++样式: inline int double2int(double d) { …

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.