4

私の関数では、最初に次のようにmodを使用します。

void function(int, int, unsigned int);

呼び出し:

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

は、 0から。get_value()まで変化するunsignedintを返します。この状況では、それよりも非常に大きな数が実行される回数が多すぎる可能性があるため、次のように変更しました。0x0xffffffffget_value() % 10241024function()

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

この状況でnumは、大丈夫です。以前gccはコンパイルしていました。

では、これら2つの方法の違いは何ですか?Cはどのように係数を計算しunsigned longますか?

4

1 に答える 1

3

あなたのプロトタイプはのためfunctionのものですが、あなたはを呼んでいますfunction1。この場合、function1関数にはプロトタイプがないため、最後のパラメーターは。と見なされますint。そのため、期待されるコンバージョンが得られません。

プロトタイプの名前を変更すると、修正されるはずです。

void function1(int, int, unsigned int);
于 2012-05-18T00:52:28.177 に答える