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
看到这个定义,我相信你应该就知道是怎么回事了。
有了最大值和最小值的定义,我们就可以进行比较了。就可以防止超出整型的范围。