最近,在CSDN的c++版块,问过一个这样一个问题:实现a^b mod n a:1-5000 ,b:0-10^8, c:1-5000000 。显然中间过程会出现溢出。 当然有人提到了大数库gmp,很好的方法,但这道题还是有范围限制的,也就是说8B的int能满足要求。
对c++中的int,short,long...总是有点困惑,所以有了以下测试:
运行环境 xp sp2,dev-c++ 4.9.9.2
运行结果:
sizeof(int) is 4
sizeof(short) is 2
sizeof(long) is 4
sizeof(long int) is 4
sizeof(long long) is 8
sizeof(unsigned short) is 2
sizeof(unsigned int) is 4
sizeof(unsigned long int) is 4
sizeof(unsigned long) is 4
sizeof(unsigned long long) is 8
结果一目了然,对上题的稍作修改:int--long long ,一切迎刃而解。以上是我的一些心得,分享之。