Questions tagged «c»

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

2
常数0.0039215689代表什么?
我不断在各种图形头文件中看到此常数 0.0039215689 似乎与颜色有关? 这是Google的首个热门产品: void RDP_G_SETFOGCOLOR(void) { Gfx.FogColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.FogColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f; Gfx.FogColor.B = _SHIFTR(w1, 8, 8) * 0.0039215689f; Gfx.FogColor.A = _SHIFTR(w1, 0, 8) * 0.0039215689f; } void RDP_G_SETBLENDCOLOR(void) { Gfx.BlendColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.BlendColor.G = _SHIFTR(w1, 16, …


11
NULL,'\ 0'和0有什么区别?
在C中,似乎有零各个值之间的差- NULL,NUL和0。 我知道ASCII字符的'0'计算结果为48或0x30。 该NULL指针通常定义为: #define NULL 0 要么 #define NULL (void *)0 另外,似乎还有一个NUL性格'\0'值得评价的人物0。 是否有时这三个值不能相等? 在64位系统上也是如此吗?
309 c  pointers  null 

8
为什么rand()+ rand()产生负数?
我观察到该rand()库函数在循环中仅被调用一次时,几乎总是产生正数。 for (i = 0; i < 100; i++) { printf("%d\n", rand()); } 但是,当我添加两个rand()呼叫时,现在生成的数字将具有更多的负数。 for (i = 0; i < 100; i++) { printf("%d = %d\n", rand(), (rand() + rand())); } 有人可以解释为什么我在第二种情况下看到负数吗? PS:我在循环之前将种子初始化为srand(time(NULL))。
304 c  random 



5
一次乘法提取位
我看到在使用了一个有趣的技术,答案到另一个问题,并想好一点理解。 我们获得了一个无符号的64位整数,并且对以下位感兴趣: 1.......2.......3.......4.......5.......6.......7.......8....... 具体来说,我们希望将它们移动到前八位,如下所示: 12345678........................................................ 我们不在乎由指示的位的值.,也不必保留它们。 该溶液是屏蔽掉不需要的位,并且乘以结果0x2040810204081。事实证明,这可以解决问题。 这种方法有多普遍?可以使用这种技术来提取位的任何子集吗?如果不是,如何确定该方法是否适用于特定的一组位? 最后,如何找到正确的(a?)乘法器以提取给定的位?

3
为什么使用英特尔C ++编译器的NaN-NaN == 0.0?
众所周知,NaN是以算术方式传播的,但是我找不到任何演示,因此我写了一个小测试: #include <limits> #include <cstdio> int main(int argc, char* argv[]) { float qNaN = std::numeric_limits<float>::quiet_NaN(); float neg = -qNaN; float sub1 = 6.0f - qNaN; float sub2 = qNaN - 6.0f; float sub3 = qNaN - qNaN; float add1 = 6.0f + qNaN; float add2 = qNaN + qNaN; float …
300 c++  c  floating-point  ieee-754  icc 


14
C中的MIN和MAX
在哪里MIN和MAX在C,规定如果在所有? 一般地并安全地键入这些内容的最佳方法是什么?(首选主流编译器的编译器扩展/内置插件。)
299 c  max  min  c-preprocessor 

4
C / C ++中字符('a')的大小
C和C ++中字符的大小是多少?据我所知,在C和C ++中char的大小均为1个字节。 在C中: #include <stdio.h> int main() { printf("Size of char : %d\n", sizeof(char)); return 0; } 在C ++中: #include <iostream> int main() { std::cout << "Size of char : " << sizeof(char) << "\n"; return 0; } 毫不奇怪,它们都给出了输出: Size of char : 1 现在我们知道,作为字符表示'a','b','c','|',...所以我只是修改了上面的代码对这些: 在C中: #include <stdio.h> int …
298 c++  c  types 

9
C中的指针:何时使用“&”号和星号?
我只是从指针开始,我有点困惑。我知道&是指变量的地址,*可以在指针变量的前面使用它来获取指针所指向的对象的值。但是,当您使用数组,字符串或使用变量的指针副本调用函数时,情况会有所不同。很难在所有这些内部看到一种逻辑模式。 什么时候应该使用&和*?
298 c  pointers 

6
如何在C中打印int64_t类型
C99标准具有整数类型,其字节大小如int64_t。我正在使用以下代码: #include <stdio.h> #include <stdint.h> int64_t my_int = 999999999999999999; printf("This is my_int: %I64d\n", my_int); 我收到此编译器警告: warning: format ‘%I64d’ expects type ‘int’, but argument 2 has type ‘int64_t’ 我尝试了: printf("This is my_int: %lld\n", my_int); // long long decimal 但是我得到同样的警告。我正在使用此编译器: ~/dev/c$ cc -v Using built-in specs. Target: i686-apple-darwin10 Configured with: /var/tmp/gcc/gcc-5664~89/src/configure --disable-checking …
298 c  stdint 

26
轻松测量经过时间
我正在尝试使用time()来测量程序的各个点。 我不明白的是为什么之前和之后的值相同?我了解这不是剖析我的程序的最佳方法,我只想了解花费多长时间。 printf("**MyProgram::before time= %ld\n", time(NULL)); doSomthing(); doSomthingLong(); printf("**MyProgram::after time= %ld\n", time(NULL)); 我努力了: struct timeval diff, startTV, endTV; gettimeofday(&startTV, NULL); doSomething(); doSomethingLong(); gettimeofday(&endTV, NULL); timersub(&endTV, &startTV, &diff); printf("**time taken = %ld %ld\n", diff.tv_sec, diff.tv_usec); 如何读取的结果**time taken = 0 26339?这是否意味着26,339纳秒= 26.3毫秒? 那大约**time taken = 4 45025是4秒25毫秒呢?
297 c++  c  linux  time  measurement 

3
什么是C中的>>> =运算符?
一位同事对此感到困惑,我无法弄清楚这个C程序实际上是如何编译和运行的。这是什么>>>=运算符和奇怪的1P1文字?我已经在Clang和GCC中进行了测试。没有警告,输出为“ ???” #include <stdio.h> int main() { int a[2]={ 10, 1 }; while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] ) printf("?"); return 0; }

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.