RTSS,运行下面这段代码:
#include<cstdio>
#include<vector>
using namespace std;
vector<int> v;
int main(){
v.push_back(1);
int a=(v.size()-2)%233;
int b=(1-2)%233;
int c=((int)v.size()-2)%233;
int d=v.size()-2;
printf("%d %d %d %d",a,b,c,d);
return 0;
}
它应该输出四个-1,但其实却输出了63 -1 -1 -1
,我觉得是因为vector的size函数的类型问题:

如上图,size返回的数据类型是它自定义的,所以减成负数后取余会变成其他的数,但是为什么这个类型支持负数却不能给负数进行模运算?模了之后的那个数是怎么得来的?求大佬解答。