牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2015-01-14 投稿人: 浏览次数:5802

最近在编程的过程中遇到一个问题,就是如何获得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型所能表示的最大值:
"); 
    printf("宏定义 十进制  %d,	二进制  %s

",amax,itoa(amax,string,2));
    printf("自定义 十进制  %d,	二进制  %s


",bmax,itoa(bmax,string,2));
    
    printf("以下为int型所能表示的最小值:
");
    printf("宏定义 十进制  %d,	二进制  %s

",amin,itoa(amin,string,2));
    printf("自定义 十进制  %d,	二进制  %s
",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寻求解答

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。