当前位置:C++技术网 > 精选软件 > C++ Primer Plus 6th 3.6 复习题 第3题 防止超出整型的范围

C++ Primer Plus 6th 3.6 复习题 第3题 防止超出整型的范围

更新时间:2019-02-15 11:30:38浏览次数:1+次

C++ Primer Plus复习题3.6 第三题  防止超出整型的范围

题目:
3. C++提供了什么措施来防止超出整型的范围?

答案:C++没有提供自动防止超出整型限制的功能,可以使用头文件climits来确定限制情况。

C++技术网辅导详解解答:
    防止整型超出范围,那就要知道各个整型类型的最大值和最小值,我们才好不让数值超过范围。如果这些要我们自己来做,可能不太好做。我们要得知道每一个类型的取值范围,也是挺麻烦的。
    好在头文件climits已经将各个类型的最大值最小值都定义为了宏,我们可以直接进行判断。这样在很大程度上让我们更加方便了。
    climits头文件里面包含了limits.h头文件,在这个文件里面才真正定义了相关的宏。我截取部分定义示意一下:

#define MB_LEN_MAX    5             // max. # bytes in multibyte char
#define SHRT_MIN    (-32768)        // minimum (signed) short value
#define SHRT_MAX      32767         // maximum (signed) short value
#define USHRT_MAX     0xffff        // maximum unsigned short value
#define INT_MIN     (-2147483647 - 1) // minimum (signed) int value
#define INT_MAX       2147483647    // maximum (signed) int value
#define UINT_MAX      0xffffffff    // maximum unsigned int value
#define LONG_MIN    (-2147483647L - 1) // minimum (signed) long value
#define LONG_MAX      2147483647L   // maximum (signed) long value
#define ULONG_MAX     0xffffffffUL  // maximum unsigned long value
#define LLONG_MAX     9223372036854775807i64       // maximum signed long long int value
#define LLONG_MIN   (-9223372036854775807i64 - 1)  // minimum signed long long int value
#define ULLONG_MAX    0xffffffffffffffffui64       // maximum unsigned long long int value

    看到这个定义,我相信你应该就知道是怎么回事了。

    有了最大值和最小值的定义,我们就可以进行比较了。就可以防止超出整型的范围。