【C++】【学习笔记】【030-031】错误处理和调试

climits中定义了各类型的最大值和最小值:
C语言对应文件路径:
/usr/include/limits.h
CPP语言对应文件路径:
/usr/include/c++/3.4.3/climts

<climits>头文件定义的符号常量
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!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值