c++中最大最小值设定(INT_MIN、INT_MAX、LLONG_MAX、LLONG_MIN)
·
前言
今天作者在刷leetcode的时候遇到一个很有趣的事情。因为在遍历BST的时候,要设置个最小的数,从而实现判断的完整性。但是作者一看数值的范围懵了:-2^31 <= Node.val <= 2^31 - 1
。起初我并没在意,直接INT_MIN结果提交报错了,一查看,好家伙:[-2147483648],来了棵这样的树。
一、四个标识符大小
作者首先将其输出了一遍,结果发现
INT_MIN:-2147483648
INT_MAX:2147483647
LONG_MIN:-2147483648
LONG_MAX:2147483647
LLONG_MIN:-9223372036854775808
LLONG_MAX:9223372036854775807
可以发现INT_MIN正好是-2^31,那能不能INT_MIN-1,结果发现INT_MIN-1=INT_MAX。简直哭笑不得。
二、分析
其实int和long占4字节32位(31位数字1位符号),而长整型long long 占8字节64位。而上述数值就是二进制构成
因此想要定义比题目中数值范围更小的数,其实有两个办法:
1、定义(long long)INT_MIN-1
,注意是先转成longlong型,再去减1
2、直接用LLONG_MIN
更多推荐
所有评论(0)