【C++】【学习笔记】【030-031】错误处理和调试
climits中定义了各类型的最大值和最小值:
C语言对应文件路径: | /usr/include/limits.h |
CPP语言对应文件路径: | /usr/include/c++/3.4.3/climts |
CHAR_MIN char的最小值
SCHAR_MAX signed char 最大值
SCHAR_MIN signed char 最小值
UCHAR_MAX unsigned char 最大值
SHRT_MAX short 最大值
SHRT_MIN short 最小值
USHRT_MAX unsigned short 最大值
INT_MAX int 最大值
INT_MIN int 最小值
UINT_MAX unsigned int 最大值
UINT_MIN unsigned int 最小值
LONG_MAX long最大值
LONG_MIN long最小值
ULONG_MAX unsigned long 最大值
FLT_MANT_DIG float 类型的尾数
FLT_DIG float 类型的最少有效数字位数
FLT_MIN_10_EXP 带有全部有效数的float类型的负指数的最小值(以10为底)
FLT_MAX_10_EXP float类型的正指数的最大值(以10为底)
FLT_MIN 保留全部精度的float类型正数最小值
FLT_MAX float类型正数最大值
样例(求阶层):
#include <iostream>
#include <climits>
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;
std::cout << "Please input a integer: ";
std::cin >> num;
Factorial fac(num);
if (fac.inRange())
{
std::cout << num << "'s factorial is: " << fac.getFactorial() << "\n\n";
}
else
{
std::cout << "Your number is too big!\n\n";
}
}
输出 :
[cpp]$ ./a.out
Please input a integer: 20
20's factorial is: 2432902008176640000
[cpp]$ ./a.out
Please input a integer: 21
Your number is too big!
还没有评论,来说两句吧...