C整型上下限INT_MAX INT_MIN及其运算

介绍

C中常量INT_MAX和INT_MIN分别表示最大、最小整数,定义在头文件limits.h中。

#include <limits.h> 
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX - 1)

INT_MAX,INT_MIN数值大小

因为int占4字节32位,根据二进制编码的规则,INT_MAX = 2^31-1,INT_MIN= -2^31.C/C++中,所有超过该限值的数,都会出现溢出,出现warning,但是并不会出现error。如果想表示的整数超过了该限值,可以使用长整型long long 占8字节64位。

关于INT_MAX INT_MIN的运算

由于二进制编码按原码、补码和反码的规则进行运算,所有程序中对INT_MAX和INT_MIN的运算应当格外注意,在出现溢出的时候,不遵循数学规则。

INT_MAX + 1 = INT_MIN
INT_MIN - 1 = INT_MAX
abs(INT_MAX) = INT_MIN

比较有趣的是,INT_MAX + 1 < INT_MAX, INT_MIN - 1 > INT_MIN, abs(INT_MIN) < 0.

实例

#include <stdio.h>
#include <stdlib.h>
#include <limits.h> 
int main()
{ 
    printf("INT_MAX  = %d\n",INT_MAX);
    printf("INT_MIN  = %d\n",INT_MIN );
    if(INT_MAX + 1 < INT_MAX)
    {
    	 printf("INT_MAX + 1 < INT_MAX\n");
    }
    if(INT_MIN - 1 > INT_MIN)
    {
    	 printf("INT_MIN - 1 > INT_MIN\n");
    }
    if(abs(INT_MIN) < 0)
    {
    	 printf("abs(INT_MIN) < 0\n");
    }
     printf("abs(INT_MIN) %d \n",abs(INT_MIN));
    return 0;
}

输出

INT_MAX  = 2147483647
INT_MIN  = -2147483648
INT_MAX + 1 < INT_MAX
INT_MIN - 1 > INT_MIN
abs(INT_MIN) < 0
abs(INT_MIN) 2147483648

参考资料

https://blog.csdn.net/u012604810/article/details/80290706

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值