本人在调试他人代买的过程中,无意间注意到了这样一个问题:int类型的负数,与unsigned类型的正数,进行求模(取余)%运算,但是结果并不是我想要的,我猜测是是unsigned类型闯祸,但是查找资料没有头绪。
#include <iostream>
using namespace std;
int main() {
int a = -100;
unsigned b = 500;
a %= b;
cout << a << endl;
system("pause");
return 0;
}
运行结果是:196
我一开始以为运行结果会是-100,结果却是196。如果将代码中的a赋值为-10,那么结果就是286。似乎都跟296这个数有关系?为啥会这样?