my_mod.cpp:
#include <iostream>
using namespace std;
unsigned int my_mod(int a, unsigned int b)
{
int result;
cout << "\ta\t=\t" << a << endl;
cout << "\tb\t=\t" << b << endl;
cout << "\ta%b\t=\t" << a%b << endl;
result = a%b;
if (result < 0) {result += b;}
return result;
}
int main()
{
cout << "-1%5 = " << -1%5 << endl;
cout << "my_mod(-1,5) = " << my_mod(-1,5) << endl;
return 0;
}
コンパイル方法: g++ ./my_mod.cpp
結果:
-1%5 = -1
a = -1
b = 5
a%b = 0
my_mod(-1,5) = 0
ここで実際に何が起こっているのか、何が起こっているのか理解できません?! これはグローバル スコープによるものではありませんよね?! つまり、それはまったく同じ % 式です ... どうすれば 0 と -1 が得られるのでしょうか?! (ちなみに、望ましい4の代わりに。)
誰かが私にこれを説明できるなら、お願いします...より広い文脈でエラーをこれに絞り込むのに数日かかりました。ホント、泣きそうです。
上記の例で、(グローバル) 独自のモジュラスが 4 を返すようにするにはどうすればよいですか??