当C / C ++中的数字常量以0为前缀时,这意味着什么?

好的…所以我有一个愚蠢的想法,并尝试将值0123放入一个int,只是好奇看看会发生什么,我假设当我打印的值我得到123,但我得到83 …有什么想法吗? 在编译器/内存中发生什么使得该值变为83? 我在C ++和C中使用GCC编译器尝试了这个,并尝试使用浮点数产生相同的结果。

便携式数据重新解释

我想以便携方式(C99)将一种类型的数据重新解释为另一种类型。 我不是在谈论铸造,我想重新解释一些给定的数据。 此外,通过便携式我的意思是它不会破坏C99规则 – 我并不是说重新解释的值在所有系统上都是相同的。 我知道3种不同的重新解释数据的方法,但其中只有两种是可移植的: 这不是便携式的 – 它打破了严格的别名规则。 /* #1 Type Punning */ float float_value = 3.14; int *int_pointer = (int *)&float_value; int int_value = *int_pointer; 这是依赖于平台的,因为它在将float写入其中之后从union中读取int值。 但它不会破坏任何C99规则,因此应该工作(如果sizeof(int) == sizeof(float) )。 /* #2 Union Punning */ union data { float float_value; int int_value; }; union data data_value; data_value.float_value = 3.14; int int_value = data_value.int_value; […]

找不到C11 GCC threads.h?

以下代码 #include 给我这个错误: fatal error: threads.h: No such file or directory 使用最新的GCC和Clang -std = c11。 GCC和Clang不支持C11线程吗? 或者是否有一个黑客(或安装的东西)来获得它? 我只是使用Ubuntu 14.04和Ubuntu repo中的gcc和clang包。

在C中退出程序时释放所需的内存

如果我使用malloc在我的C程序中分配内存,现在我想退出,我是否必须释放分配的内存,或者我可以假设,因为我的整个程序终止,它将被操作系统释放? 我在Linux环境中运行。

指针/地址差异

为什么两个地址之间的区别是错误的? http://codepad.org/NGDqFWjJ #include int main() { int i = 10, j = 20; int *p = &i; int *q = &j; int c = p – q; printf(“%d\n”, p); printf(“%d\n”, q); printf(“%d”, c); return 0; } 输出: -1083846364 -1083846368 1

在MS Visual C ++中启用VLA(可变长度数组)?

如何在MS Visual C ++中启用使用C99中定义的VLA或可变长度数组,或者根本不可能? 是的我知道C ++标准是基于C89的,并且VGA在C89标准中不可用,因此在C ++中不可用,但MSVC ++也应该是C编译器,可以使用/ TC编译器参数( Compile as C Code (/TC) )。 但这样做似乎并没有启用VLA,并且编译过程在构建为C ++( Compile as C++ Code (/TP) )时会出现相同的错误。 也许MSVC ++ C编译器只符合C89或者我缺少一些东西(一些特殊的构造或pragma / define)? 代码示例: #include int main(int argc, char **argv) { char pc[argc+5]; /* do something useful with pc */ return EXIT_SUCCESS; } 编译错误: 错误C2057:预期的常量表达式 错误C2466:无法分配常量大小为0的数组 错误C2133:’pc’:未知大小

我们可以通过指针改变用const定义的对象的值吗?

#include int main() { const int a = 12; int *p; p = &a; *p = 70; } 它会起作用吗?

使用C在文本文件中返回随机行的最佳方法是什么?

使用C在文本文件中返回随机行的最佳方法是什么? 它必须使用标准I / O库( ),因为它适用于Nintendo DS自制程序。 澄清: 使用文件中的标题来存储行数不适用于我想要做的事情。 我希望它尽可能随机(如果每条线具有被选为每隔一条线的相同概率,则最好。) 程序运行时,该文件永远不会更改。 (这是DS,所以没有多任务处理。)

在C ++程序中包含C头

我有一个C ++程序(.cpp),我希望在其中使用C头文件中存在的一些函数,如stdio.h,conio.h,stdlib.h,graphics.h,devices.h等。 我可以在我的cpp文件中包含stdio.h库: #include 。 如何包含其他库文件? 如何添加graphics.h库? 我正在使用Microsoft Visual Studio 6.0企业版和Turbo C ++ 3.0。

在C中计算大数的阶乘

在我的C代码中,我想计算1到100范围内的数字的阶乘。对于小数字,该函数可以工作,但对于更大的数字,例如100! 它返回错误的结果。 有什么方法可以处理C中的大数阶因子? 我正在使用的编译器是gcc v4.3.3。 我的代码如下: #include #include double print_solution(int); int main(void) { int no_of_inputs,n ; int ctr = 1; scanf(“%d”,&no_of_inputs); //Read no of inputs do { scanf(“%d”,&n); //Read the input printf(“%.0f\n”,print_solution(n)); ctr++; }while(ctr <= no_of_inputs); return 0; } double print_solution(int n) { if(n == 0 || n == 1) return 1; else return n*print_solution(n-1); […]