[英]In C, how is modulus calculated for unsigned long?
在我的函數中,我首先使用mod如下:
void function(int, int, unsigned int);
電話:
function(100, 200, get_value() % 1024);
get_value()
將返回一個從0x
0到0xffffffff
不等的unsigned int。 在這種情況下, get_value() % 1024
可能是一個大於1024
的非常大的數字導致function()
運行太多次,所以我改變它如下:
unsigned int num = get_value() % 1024;
function(100, 200, num);
在這種情況下, num
是可以的。 我用gcc
編譯。
那么這兩種方法有什么區別?C如何計算unsigned long
模數?
你的原型是為了function
,但是你正在調用function1
。 在這種情況下, function1
函數沒有原型,因此最后一個參數被認為是int
。 這就是為什么你沒有得到預期的轉換。
重命名原型應修復它:
void function1(int, int, unsigned int);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.