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

时间:2022-01-16 17:27:09

最近在编程的过程中遇到一个问题,就是如何获得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

 

如下图所示结果:

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

 

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

 

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


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