常用数据类型
数据类型 | 占用字节数 | 取值范围 |
---|---|---|
short | 2 | -32,768 ~~ 32,767 -215~~215-1 |
int | 4 | -2,147,483,648 ~~ 2,147,483,647 -231~231-1 |
long | 4 | -2,147,483,648 ~~ 2,147,483,647 -231~231-1 |
long long | 8 | -9,223,372,036,854,775,808 ~~ 9,223,372,036,854,775,807 -263 ~~ 263-1 |
float | 4 | 1.17549e-038 ~~ 3.40282e+038 |
double | 8 | 2.22507e-308 ~~ 1.79769e+308 |
bool | 1 | 0 ~~ 1 |
char | 1 | -128 ~~ 127 -28 ~~ 28-1 |
代码实现
附一段C++代码:
#include<iostream>
#include<iomanip>
#include<limits>
using namespace std;
int main(){
cout<<" ==================================================================="<<endl;
cout<<"| 数据类型 |占用字节数| 最小取值 | 最大取值 |"<<endl;
cout<<" -------------------------------------------------------------------"<<endl;
cout<<"|short |"<<left<<setw(10)<<sizeof(short)<<"|"<<
setw(22)<<(numeric_limits<short>::min)()<<"|"<<
setw(22)<<(numeric_limits<short>::max)()<<"|"<<endl;
cout<<" -------------------------------------------------------------------"<<endl;
cout<<"|int |"<<left<<setw(10)<<sizeof(int)<<"|"<<
setw(22)<<(numeric_limits<int>::min)()<<"|"<<
setw(22)<<(numeric_limits<int>::max)()<<"|"<<endl;
cout<<" -------------------------------------------------------------------"<<endl;
cout<<"|long |"<<left<<setw(10)<<sizeof(long)<<"|"<<
setw(22)<<(numeric_limits<long>::min)()<<"|"<<
setw(22)<<(numeric_limits<long>::max)()<<"|"<<endl;
cout<<" -------------------------------------------------------------------"<<endl;
cout<<"|long long |"<<left<<setw(10)<<sizeof(long long)<<"|"<<
setw(22)<<(numeric_limits<long long>::min)()<<"|"<<
setw(22)<<(numeric_limits<long long>::max)()<<"|"<<endl;
cout<<" -------------------------------------------------------------------"<<endl;
cout<<"|float |"<<left<<setw(10)<<sizeof(float)<<"|"<<
setw(22)<<(numeric_limits<float>::min)()<<"|"<<
setw(22)<<(numeric_limits<float>::max)()<<"|"<<endl;
cout<<" -------------------------------------------------------------------"<<endl;
cout<<"|double |"<<left<<setw(10)<<sizeof(double)<<"|"<<
setw(22)<<(numeric_limits<double>::min)()<<"|"<<
setw(22)<<(numeric_limits<double>::max)()<<"|"<<endl;
cout<<" -------------------------------------------------------------------"<<endl;
cout<<"|bool |"<<left<<setw(10)<<sizeof(bool)<<"|"<<
setw(22)<<(numeric_limits<bool>::min)()<<"|"<<
setw(22)<<(numeric_limits<bool>::max)()<<"|"<<endl;
cout<<" -------------------------------------------------------------------"<<endl;
cout<<"|char |"<<left<<setw(10)<<sizeof(char)<<"|"<<
setw(22)<<(int)(numeric_limits<char>::min)()<<"|"<<
setw(22)<<(int)(numeric_limits<char>::max)()<<"|"<<endl;
cout<<" -------------------------------------------------------------------"<<endl;
return 0;
}
运行结果:
根据上述代码,可自行测试其他的数据类型。
注
1.关于int
类型与long
类型的占用字节数、取值范围相同:
之所以有“整型”和“长整形”两种不同类型,是C语言在诞生时发明者规定好的,前者存储的整数的值域小于后者。
早期的操作系统是16位系统,int用二字节表示,范围是-32768 ~ 32767;long用4字节表示,范围是-2147483648 ~ 2147483647。
后来发展到32位操作系统,int 用4字节表示,与long相同。
目前的操作系统已发展到64位操作系统,但因程序编译工艺的不同,两者表现出不同的差别:
32位编译系统:int占四字节,与long相同。
64位编译系统:int占四字节,long占8字节,long数据范围变为:-263~263-1。
2.如何表示各种数据类型的最大值?
利用limits.h
库。表示最大值为TYPE_MAX
,最小值为TYPE_MIN
。(没有提供浮点数)
如:
#include <stdio.h>
#include <limits.h>
int main(){
printf("The number of bits in a byte %d\n", CHAR_BIT);
printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);
printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);
printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);
printf("The maximum value of SHORT INT = %d\n", SHRT_MAX);
printf("The minimum value of INT = %d\n", INT_MIN);
printf("The maximum value of INT = %d\n", INT_MAX);
printf("The minimum value of CHAR = %d\n", CHAR_MIN);
printf("The maximum value of CHAR = %d\n", CHAR_MAX);
printf("The minimum value of LONG = %ld\n", LONG_MIN);
printf("The maximum value of LONG = %ld\n", LONG_MAX);
return(0);
}