在C中,如何计算无符号长的模数?

时间:2012-05-18 00:44:32

标签: c math

在我的功能中,我首先使用mod如下:

void function(int, int, unsigned int);

主叫:

function(100, 200, get_value() % 1024);

get_value()将返回一个从0x 0到0xffffffff不等的无符号整数。在这种情况下,get_value() % 1024可能会比1024大很多,导致function()运行太多次,所以我将其更改为如下所示:

unsigned int num = get_value() % 1024;
function(100, 200, num);

在这种情况下,num没问题。我用gcc编译。

那么这两种方法有什么区别?C如何计算unsigned long的模数?

1 个答案:

答案 0 :(得分:3)

您的原型适用于function,但您正在调用function1。在这种情况下,function1函数没有原型,因此最后一个参数被认为是int。这就是为什么你没有得到预期的转换。

重命名原型应该修复它:

void function1(int, int, unsigned int);