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
这里到底发生了什么,我只是不明白可能会发生什么?!这不可能是由于全球范围,对吧?!我的意思是它是完全相同的 %-expression ......他们怎么能产生 0 和 -1?!(顺便说一下,而不是所需的 4。)
如果有人可以,请向我解释一下……我只花了几天时间就将更广泛的错误范围缩小到这个范围。说真的,我快哭了。
在上面的示例中,如何让我的(全局)自己的模数返回 4?