簡體   English   中英

在C中,如何計算無符號長的模數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM