C/C++语言中的int等基本数据类型所能表示的最大值最小值

最近在编程的过程中遇到一个问题,就是如何获得int等基本数据类型所能表示的最大值以及最小值。经过一番网上的查询,以及自己的实验,总结出了如下内容:

 

在定义一个int型的变量,并且想让它的值为最大时,我们应该如下定义:

int a = - ( ( 1<< ( sizeof ( int ) * 8 - 1 ) ) + 1);

这样,我们所定义的变量a的值就是int型所能表示的最大值。

如果我们想要定义一个变量并且使它的值为int型所能表示的最小值时,我们应如下定义:

int b = 1 << ( sizeof ( int ) * 8 - 1 );

这样,我们所定义的变量a的值就是int型所能表示的最小值。

同理,对于double或者float等基本类型,我们只需要将其中的int换成对应的数据类型的名称即可。

 

当然,在C/C++语言中,在头文件limits.h中,有关于各种基本数据类型的最大以及最小值的宏定义。例如,int型的最大值为INT_MAX,最小值为INT_MIN。

 

我们运行如下代码可以进行检验:

#include<stdio.h>
#include<limits.h>
#include<stdlib.h>

int main()
{
    char string[128];
    int amax=INT_MAX, bmax= - ( ( 1<< ( sizeof ( int ) * 8 - 1 ) ) + 1);
    int amin=INT_MIN, bmin = 1 << ( sizeof ( int ) * 8 - 1 );
    printf("以下为int型所能表示的最大值:\n"); 
    printf("宏定义 十进制  %d,\t二进制  %s\n\n",amax,itoa(amax,string,2));
    printf("自定义 十进制  %d,\t二进制  %s\n\n\n",bmax,itoa(bmax,string,2));
    
    printf("以下为int型所能表示的最小值:\n");
    printf("宏定义 十进制  %d,\t二进制  %s\n\n",amin,itoa(amin,string,2));
    printf("自定义 十进制  %d,\t二进制  %s\n",bmin,itoa(bmin,string,2));
    
    
    system("pause");
    return 0;
}


 

 

对于以上代码中的itoa()函数,它是定义在头文件stdlib.h中的一个函数,功能是将数字转换成任意进制的数, 该函数的第一个参数是要转换的数字;第二个参数是一个用于存放转换后的字符串的字符串变量,我这里用的是一个字符数组;第三个参数是要转换成的进制数,我这里是要转换成二进制,后面的数字就是2。对以该函数的详细了解,可参阅http://baike.baidu.com/link?url=QIOdn0VDtxTp5Ju05uAablsWq4kjAAsMDvvicrWC61_MfiCv83zqS6XWOcXYdem41rwf9Jszt-T4H33I-ArsHq

 

如下图所示结果:

 

 

以上内皆为本人请自验证。


如有疑问,请发送邮件至1993wbb@sina.cn或者加QQ群274313939寻求解答

 

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值