在我的功能中,我首先使用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
的模数?
答案 0 :(得分:3)
您的原型适用于function
,但您正在调用function1
。在这种情况下,function1
函数没有原型,因此最后一个参数被认为是int
。这就是为什么你没有得到预期的转换。
重命名原型应该修复它:
void function1(int, int, unsigned int);