乘方计算,直到溢出

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:53:33
给定一个unsigned long型的数据,计算其n次方,直到数据溢出。
例如 输入:111
输出:111, 12321, 1367631, 151807041
我搞不明白如何判断数据是否溢出,哪位帮忙解决一下,在此谢过。

#include<iostream>
using namespace std;
int main()
{
unsigned long a=111,b=111;
cout<<b;
do
{
b=b*a;
cout<<","<<b;
}while(b<=4294967295/111);
return 0;
}
这样就行了

用浮点数计算:
将给定的 数据强制转换为double型,然后和2^32比较,当大于的时候,那么就表明溢出了。

一般情况下:
[signed]int 为-32768到+32767
unsigned int 为0到65535
[signed] short [int ] 为-32767到32768
unsigned short int 为0到65535
long int 为-2147483648到2147483647
unsigned long [int] 为0到4294967295
一般给定一种数据都有其取值范围不知道的情况下最好先查下