C++ 中的INT_MAX,INT_MIN数值大小操作
int占4字节32位,根据二进制编码的规则,
INT_MAX=2^31-1=2147483647
INT_MIN=-2^31=-2147483648
C/C++中,所有超过该限值的数,都会出现溢出,出现warning,但是并不会出现error。
如果想表示的整数超过了该限值,可以使用长整型longlong占8字节64位。
补充:C++数值最大最小标识符一网打尽,INT_MIN/INT_MAX/LONG_MIN/LONG_MAX等等
我就废话不多说了,大家还是直接看代码吧~
Constant | Meaning | Value |
---|---|---|
CHAR_BIT | Numberofbitsinthesmallestvariablethatisnotabitfield. | 8 |
SCHAR_MIN | Minimumvalueforavariableoftypesignedchar. | -128 |
SCHAR_MAX | Maximumvalueforavariableoftypesignedchar. | 127 |
UCHAR_MAX | Maximumvalueforavariableoftypeunsignedchar. | 255(0xff) |
CHAR_MIN | Minimumvalueforavariableoftypechar. | -128;0if/Joptionused |
CHAR_MAX | Maximumvalueforavariableoftypechar. | 127;255if/Joptionused |
MB_LEN_MAX | Maximumnumberofbytesinamulticharacterconstant. | 5 |
SHRT_MIN | Minimumvalueforavariableoftypeshort. | -32768 |
SHRT_MAX | Maximumvalueforavariableoftypeshort. | 32767 |
USHRT_MAX | Maximumvalueforavariableoftypeunsignedshort. | 65535(0xffff) |
INT_MIN | Minimumvalueforavariableoftypeint. | -2147483647-1 |
INT_MAX | Maximumvalueforavariableoftypeint. | 2147483647 |
UINT_MAX | Maximumvalueforavariableoftypeunsignedint. | 4294967295(0xffffffff) |
LONG_MIN | Minimumvalueforavariableoftypelong. | -2147483647-1 |
LONG_MAX | Maximumvalueforavariableoftypelong. | 2147483647 |
ULONG_MAX | Maximumvalueforavariableoftypeunsignedlong. | 4294967295(0xffffffff) |
LLONG_MIN | Minimumvalueforavariableoftypelonglong. | -9,223,372,036,854,775,807-1 |
LLONG_MAX | Maximumvalueforavariableoftypelonglong. | 9,223,372,036,854,775,807 |
ULLONG_MAX | Maximumvalueforavariableoftypeunsignedlonglong. | 18,446,744,073,709,551,615(0xffffffffffffffff) |
补充:c++中short的最小值SHRT_MIN减1不是SHRT_MAX的原因
最近在看一本一直都想看的书,c++primerplus,本来想看的是c++primer,结果买错了,反正都差不多。
在学习short,int,long的时候,看到书中这样写到:整型变量的行为就像里程表。如果超越了限制,其值将为范围另一端的取值。这句话我是这样理解的,假如我们设置了一个int型的整数,例如intn_int=INT_MAX;那么,我们做n_int+1时输出应为INT_MIN。结果的确是这样。但是short的有点特别,虽然不常见。
下面看一段程序:
intc_char=CHAR_BIT; intn_int=INT_MIN; shortn_short=SHRT_MIN; longn_long=LONG_MAX; longlongn_llong=LLONG_MAX; cout<下面是程序结果:
解释:
程序中定义了n_int为int型的最小值,我们输出n_int-1时发现结果是int的最大值INT_MAX。结果第二行第一个数。但是在程序的第四行我们定义了一个n_short,赋值SHRT_MIN,然后输出n_short-1,理论上说结果应该为32767,也就是SHRT_MAX。但是结果不一样,那么结果为什么会这样呢?
我们可以看输出中的第一行,此行输出的是各个数值在计算机中占的字节数。在输出sizeof(n_short-1)时,结果是4,也就是数n_short-1现在是一个整型数。在c++中规定short是两个字节,也就是16位。但是在计算机中,short存储占4个字节,因此,在short超出范围的时候会自动转换成整型的数。
这里额外在说一点,c++中基本整型有5种:char、short、int、long、longlong(c++11中)。这里注意,char是基本整型。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。