Tag: gcc

使用浮动和双倍时,c中的-0.0000是多少?

#include #include #define answer 3.141593 void main(int argc, char **argv) { float a = (argc – 2)?: strtod(argv[1], 0); printf(“double = %lf ,float = %f”, a-answer , a-answer); } 当我这样运行时: ./a.out 3.141593 输出是 double = -0.000000 ,float = -0.000000 为什么-0.00000 ? 如何使其输出0.000000 ? 我怎样才能做出a == answer ? 如果使用2的补码,怎么会有-0值?

不可能发生了! 这是什么意思?

我遇到了一个有趣的运行时错误。 我认为这是某种内存泄漏。 我写了以下程序: C代码: #include #include #include #include #include #define PRECISION 4096 #define DECIMAL_POINT 1 #define NULL_TERMINATOR 1 void gatherSquares(const uint32_t limit, uint32_t ** const arr, uint32_t * const count); uint32_t inList(const uint32_t n, const uint32_t * const arr, const uint32_t count); void print_help(const char * const str); int main(int argc, char* argv[]) { uint32_t […]

如何在gcc中获得当前的c方言?

C编程中的新手。 在gcc -std设置编译的C标准,例如gcc -std=c99 。 有可能知道当前设置了哪个C标准?

如何在C中为AVR-Studio编写自定义reset()函数?

所以我被分配了为AVR编译编写自定义reset()函数的任务。 我得到了这个信息 – “Atmega128和Pic24e在程序地址0x0处有复位中断。写一个函数reset()来复位程序。我也听说过强制系统重启的一种简单方法就是发送它进入无限循环。 叫我疯了,但这就像写作一样简单: function reset(){ goto 0x00000000; } 不确定你是否可以这样做,而不是寻找一个复杂的解释,因为我很确定这是一个通用的问题。 简短而甜蜜,如果你能:)

Cygwin gcc – asm错误:

我有一个用C编写的项目,最初是在Linux上完成的,但现在必须在Windows上完成。 部分代码在几个地方包含这一行 asm(“movl temp, %esp”); 但这会导致“未定义的引用’temp’”错误。 使用gcc 4.3.2编译器(在另一台机器上测试)在Linux上进行编译没有问题,这是我在Cygwin上的版本。 还有另一种方法可以完成这条线的工作吗?

当您取消引用后增量C时会发生什么

我收到了很多相互矛盾的答案。 但正如我一直理解的那样。 当我们在C中有一个指针并在后增量语句中使用它时,后增量将始终在代码行结算后发生。 int array[6] = {0,1,2,3,4,5}; int* p = array; printf(“%d”, *p++); // This will output 0 then increment pointer to 1 输出: 0 非常简单的东西。 现在,我正在接受人们告诉我的信息和我自己的经历中的一些不和谐。 // Same code as Before int array[0] = {0,1,2,3,4,5}; int* p = array; printf(“%d”, *(p++)); // Issue with this line 输出: 0 现在,当我运行代码的第二个版本时结果是它将输出0然后递增指针。 括号隐含的操作顺序似乎被违反了。 然而,这个网站上的其他一些答案告诉我,应该发生的正确的事情是增量应该在取消引用之前发生。 所以我想我的问题是:我的理解是否正确? post post […]

“char”是一种特殊类型的整数变量吗?

我最近遇到一个声明说c中的“char”类型实际上是一种特殊forms的整数 – 一种存储代表字符和符号的ASCII代码。 这有效期有多远? 这导致另一个问题 – 真的char类型可以归类为C中的整数吗?

使用OpenMP进行编译会导致内存泄漏

根据valgrind的说法,在使用OpenMP编译一个简单的hello-world程序时,我可能会导致内存泄漏。 这没有意义,因为hello-world程序不会故意使用任何OpenMPfunction。 假设下面的程序名为hi.c并根据编译 $ gcc -o hi hi.c GCC版本4.8.3 #include int main( void ) { printf( “hi\n” ); return 1; } 我们应该期待来自valgrind的泄漏报告来validation显而易见的:没有泄漏。 我的观察结果与此假设一致: $ valgrind –tool=memcheck ./hi ==13064== Memcheck, a memory error detector ==13064== Copyright (C) 2002-2013, and GNU GPL’d, by Julian Seward et al. ==13064== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright […]

关于’gdb’下尾部优化代码的疑问

考虑C中的尾递归因子实现: #include unsigned long long factorial(unsigned long long fact_so_far, unsigned long long count, unsigned long long max_count){ if (max_count==0 || max_count==1 || count >= max_count) return fact_so_far; else { printf(“%llu %p \n”, count, &factorial); return factorial(fact_so_far * count, ++count, max_count); } } int main(int argc, char **argv) { unsigned long long n; scanf(“%llu”, &n); printf(“\n […]

在’*’标记之前编译“错误:预期’)’时出现多个相同错误

我想用C编程。 当我使用以下参数编译时…. gcc -D_BSD_SOURCE -Wall -ansi -pedantic -g tokenizer.c FileOccur.c WordList.c wordstat.c indexer.c -o indexer 我从终端得到这个作为回应: In file included from ../Headers/WordList.h:11, from FileOccur.c:12: ../Headers/FileOccur.h:18: error: expected ‘)’ before ‘*’ token ../Headers/FileOccur.h:20: error: expected ‘)’ before ‘*’ token In file included from ../Headers/WordList.h:11, from WordList.c:11: ../Headers/FileOccur.h:18: error: expected ‘)’ before ‘*’ token ../Headers/FileOccur.h:20: error: expected ‘)’ […]