为什么C和Ruby之间的模运算符(%)的行为对于负整数是不同的?

我在这里运行一些代码。 我试过-40 % 3 。 它给了我输出2 。 当我在C中执行相同的操作时,我得到: int i = (-40) % 3 printf(“%d”, i); 输出是 -1 两种语言如何在内部执行模运算?

评估数学表达式

我正在寻找一种可以用来评估数学表达式的算法。 我已经看到了几个关于SO的问题,但是答案是C#/ Delphi或python特有的。 我需要在C中编写算法:) 我试图解决的问题是给用户输入,如 3*(2*x + 1)/x 我可以评估任何x值的表达式。 有哪些算法可以做到这一点? 如果您想建议一个已经执行此操作的库,那么我更喜欢C库 谢谢

如果他们定义了标准的ABI,C / C ++会“丢失”什么?

标题说明了一切。 我特别谈论C / C ++,因为他们都认为这是“实施问题”。 我认为,定义标准接口可以轻松构建模块系统,以及许多其他好东西。 如果他们定义了标准的ABI,C / C ++会“丢失”什么?

在C中生成INTEGERS的均匀分布

我编写了一个C函数,我认为从范围[rangeLow,rangeHigh](包括范围)的均匀分布中选择整数 。 这不是家庭作业 – 我只是在一些嵌入式系统中使用它来修补我正在做的事情。 在我的测试用例中,此代码似乎产生了适当的分布。 但是,我并不完全相信实施是正确的。 如果我在这里做错了什么,有人可以做一次健全检查并让我知道吗? //uniform_distribution returns an INTEGER in [rangeLow, rangeHigh], inclusive. int uniform_distribution(int rangeLow, int rangeHigh) { int myRand = (int)rand(); int range = rangeHigh – rangeLow + 1; //+1 makes it [rangeLow, rangeHigh], inclusive. int myRand_scaled = (myRand % range) + rangeLow; return myRand_scaled; } //note: make sure rand() […]

pthread_create并传递一个整数作为最后一个参数

我有以下function: void *foo(void *i) { int a = (int) i; } int main() { pthread_t thread; int i; pthread_create(&thread, 0, foo, (void *) i); } 在编译时,有一些关于强制转换的错误( (void *) i和int a = (int) i )。 如何正确传递整数作为pthread_create的最后一个参数?

为什么我们需要在%c之前放置空间?

下面的代码在编译后给出了奇怪的o / p。 main() { char name[3]; float price[3]; int pages[3], i; printf ( “\nEnter names, prices and no. of pages of 3 books\n” ) ; for ( i = 0 ; i <= 2 ; i++ ) scanf ("%c %f %d", &name[i], &price[i], &pages[i] ); printf ( "\nAnd this is what you entered\n" ) […]

获取可执行文件中文本部分的开始和结束地址

我需要获取可执行文件部分的开始和结束地址。 我怎么才能得到它? 我可以从_init符号或_start符号获取起始地址,但是结束地址呢? 在开始.rodata部分之前,我应该考虑text部分的结束地址是最后一个地址吗? 或者我应该编辑默认的ld脚本并添加我自己的符号来指示文本部分的开头和结尾,并在编译时将其传递给GCC? 在这种情况下,我应该在哪里放置新符号,我应该考虑init和fini部分吗? 获取文本部分的开始和结束地址的好方法是什么?

C中的浮点运算是关联的吗?

加法在数学上保持关联属性: (a + b) + c = a + (b + c) 在一般情况下,此属性不适用于浮点数,因为它们表示有限精度的值。 作为优化的一部分,是否允许编译器在从C程序生成机器代码时进行上述替换? 它在C标准中的确切位置在哪里?

基于便携式文本的控制台操纵器

应用程序可以操作基于文本的控制台或终端,并更改其颜色,设置光标位置,… 支持的方法是: 对于类Unix系统:有ANSI escape code 。 对于Windows系统:有像SetConsoleTextAttribute这样的API。 … 但是, 有没有轻量级和可移植的C / C ++库来处理颜色和光标的操作系统之间的差异? 如果技术上不可能,那就尽一切努力 注意:我不是在寻找重型外部工具来模拟类似unix的终端(如Cygwin,Msys-rxvt,……)。 我认为使用Windows API和ANSI转义码可以实现简单的可移植性。 而不是ncurses,因为它很重,并且有很多function来完全控制控制台,我认为它需要模拟 注意(2):我早期和丑陋的努力是一个用VC ++ 6编写的Windows Console库,但它不可移植……你可以在这里看到它。

在C下通过引用传递指针参数?

#include #include void getstr(char *&retstr) { char *tmp = (char *)malloc(25); strcpy(tmp, “hello,world”); retstr = tmp; } int main(void) { char *retstr; getstr(retstr); printf(“%s\n”, retstr); return 0; } gcc不会编译这个文件,但是在添加#include 我可以使用g ++来编译这个源文件。 问题是:C编程语言是否支持通过引用传递指针参数? 如果没有,为什么? 谢谢。