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

你可能感兴趣的:(cpp,c++)