首先,这里有个前提,那就是你的编译器对unsigned long至少做4字节处理,而int做4字节处理十进制数4294967295表示成二进制就是11111111111111111111111111111111也就是32个1,即对于四字节而言,全都是1而32个1就是int型数据的-1的补码表示
数值溢出 所导致的