程序出错可以分为两大类:
1、编译时错误
2、运行时错误
让函数返回错误代码:
如果计算的值超出了计算机所能表达的最大整数可以采用climits头文件.
这个头文件从c的limits.h头文件应用过来的, 主要列出了各种数据类型在给定操作系统上的取值范围,并且把每种数据类型的最大可取值和最小可取值都分别定义为一个常量共我们比较。比如, SHORT_MAX代表短整数类型在给定系统上的最大可能值,SHORT_MIN代表短整数类型在给定操作系统上的最小可取值。USHORT_MAX代表无符号整数类型的最大可取值。比如在例子中,为了判断阶乘计算的结果没有超出一个无符号长整数的最大取值,我们可以使用ULONG_MAX来提前获得这个值进行比较。
#include <iostream>
#include <climits>
using namespace std;
class Factorial
{
public:
Factorial(unsigned short num);
unsigned long getFactorial();
bool inRange();
private:
unsigned short num;
};
Factorial::Factorial(unsigned short num)
{
this ->num = num;
}
unsigned long Factorial::getFactorial()
{
unsigned long sum = 1;
for(int i=1; i<= num; i++)
{
sum *= i;
}
return sum;
}
bool Factorial::inRange()
{
unsigned long max = ULONG_MAX;
for(int i=num; i>=1; --i)
{
max /= i;
}
if(max < 1)
return false;
else
return true;
}
int main()
{
unsigned short num = 0;
cout << "请输入一个整数: " ;
cin >> num;
Factorial fac(num);
if(fac.inRange())
{
cout << num << "的阶乘值是" << fac.getFactorial() << "\n\n";
}
else
{
cout << "您输入的值太大!\n\n";
}
return 0;
}