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

怼烎@ 2022-08-06 02:23 211阅读 0赞

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类型正数最大值

样例(求阶层)

  1. #include <iostream>
  2. #include <climits>
  3. class Factorial
  4. {
  5. public:
  6. Factorial(unsigned short num);
  7. unsigned long getFactorial();
  8. bool inRange();
  9. private:
  10. unsigned short num;
  11. };
  12. Factorial::Factorial(unsigned short num)
  13. {
  14. this->num = num;
  15. }
  16. unsigned long Factorial::getFactorial()
  17. {
  18. unsigned long sum = 1;
  19. for (int i = 1; i <= num; i++)
  20. {
  21. sum *= i;
  22. }
  23. return sum;
  24. }
  25. bool Factorial::inRange()
  26. {
  27. unsigned long max = ULONG_MAX;
  28. for (int i = num; i >= 1; --i)
  29. {
  30. max /= i;
  31. }
  32. if (max < 1)
  33. {
  34. return false;
  35. }
  36. else
  37. {
  38. return true;
  39. }
  40. }
  41. int main()
  42. {
  43. unsigned short num = 0;
  44. std::cout << "Please input a integer: ";
  45. std::cin >> num;
  46. Factorial fac(num);
  47. if (fac.inRange())
  48. {
  49. std::cout << num << "'s factorial is: " << fac.getFactorial() << "\n\n";
  50. }
  51. else
  52. {
  53. std::cout << "Your number is too big!\n\n";
  54. }
  55. }

输出

  1. [cpp]$ ./a.out
  2. Please input a integer: 20
  3. 20's factorial is: 2432902008176640000
  4. [cpp]$ ./a.out
  5. Please input a integer: 21
  6. Your number is too big!

发表评论

表情:
评论列表 (有 0 条评论,211人围观)

还没有评论,来说两句吧...

相关阅读