基本数据类型
C++11语言有一组基本类型,对应于计算机的基本存储单元和使用这些单元去保存数据的一些常用方式 ,
--------------------------------------------------------------------------------------------
布尔型 bool |
布尔型 bool |
字符型 char,wchar_t,char16_t,char32_t |
整型 short,int,long,long long |
浮点型 float, double,long double |
无类型 void |
----------------------------------------分割线-------------------------------------------
下面3种类型,他们是由底层类型实现的 有可能是int 或者short什么的
宽字符型 wchar_t |
16位字符型 char16_t |
32位字符型 char32_t |
16位字符型 char16_t |
32位字符型 char32_t |
------------------------------------------------------------------------------------------------
其中bool 类型是c++中才有的使用1bit来存储,只有true和false 两种状态。不想c语言使用#define来定义bool变量。还有一点很重要
char 16_t ,char32_t, long 都是c++11中才有的哦!
Tipes:
首先说明一下计算机中的是怎么表示字符的,例如显示器上的ABC这些字符。我们都知道计算机中是有只有0和1的,那么怎么表示字符呢。很简单就是使用一种映射(高中数学说函数的时候说的就是一种对应关系 比如x通过一种对应关系对应到y),而映射有很多种有ASCII和Unicode等等。
char 其实也叫小整数,使用1byte来存储,编程语言通过使用字母数值编码(就是我们说的映射关系)来转换数值和字符,所以char是一种整型被用来能够存储计算机系统中的基本符号,我们可以认为char是比short更短的整型
- char c=77;
- cout<<c<<endl;//输出为M
这些基础类型的详细使用会在后面的文章详细说明的
计算机中的单位
计算机只有两种状态0和1,而存储0和1的单位就是
bit,因为bit单位太小了就需要更高的单位来表示,就像平常的单位制m ,km等等。
1 Byte=8 bite
1 WORD=2 byte
上面就是我们编程经常见的两个存储单位Byte和WORD(windows 编程你会看见),其中Byte可就非常关键了,因为现在的x86架构的cpu(就是你买的intercpu)都是按值字节来寻址(对内存控制的最小单位)。
下面是非编程情况下使用的单位
B,KB,MB,GB,TB,PB,EB,ZB,YB,BB
其中B表示Byte ,它们的进制是1024倍。
有符号整型和无符号整型
一些基本类型可以使用一个或多个类型修饰符进行修饰:
- signed 有符号存储
- unsigned 无符号存储
下面显示了各种变量类型在内存中
一般情况下存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。
类型 字节 范围
char 1 个字节 -128 到 127 或者 0 到 255
char 1 个字节 -128 到 127 或者 0 到 255
unsigned char 1 个字节 0 到 255
signed char 1 个字节 -128 到 127
int 4 个字节 -2147483648 到 2147483647
unsigned int 4 个字节 0 到 4294967295
signed int 4 个字节 -2147483648 到 2147483647
short int 2 个字节 -32768 到 32767
unsigned short int 2 个字节 0 到 65,535
signed short int 2 个字节 -32768 到 32767
long int 4 个字节 -2,147,483,647 到 2,147,483,647
signed long int 4 个字节 与 long int 相同
unsigned long int 4 个字节 0 到 4,294,967,295
long long int 8个字节 2^63-1到2^63
signed long long int 8个字节 2^63-1到2^63
unsigned long long int 8个字节 到2^64+1
float 4 个字节 +/- 3.4e +/- 38 (~7 个数字)
double 8 个字节 +/- 1.7e +/- 308 (~15 个数字)
long double 8 个字节 +/- 1.7e +/- 308 (~15 个数字)
看到上面的表可能有人迷惑,short int 这是什么,
其实c++中short 是short int 的简写,其他整形一样
TIpes:
浮点类型是没有有符号和无符号的概念的。
查看数值限定
上面数据的在内存中占据的大小,或者说数据大小的范围是 一般情况下吗。现在来说明一下
c++因为有可能要和底层硬件做交互所以在各个操作系统上的数据大小不一定一样 。这一点虽然可以和硬件最好的交互但是也让人很头疼,它不像java为了夸平台把数据类型大小都设计为固定的。c++的数据大小是和操作系统息息相关的。但是c++有一套标准,如下
①short 大于等于16位;
②int 大于等于 short;
③long 大于等于32位 且long 大于等于 int;
④long long 大于等于 64位 且long long 大于等于 long;
⑤char 等于 8位;
⑥bool 等与 8位;
⑦float 等于32位;
⑧double 等于64位且double 大于等于float;
⑨long double 大于等于double
有人可能会说,我不可能每次都查手册 ,google 或则baidu 这个操作系统上c++数据类型是多大的吧 ,当然不用 .。我们可以使用sizeof关键字和相应的头文件来确定基本数据类型是多大的。代码如下
#include<iostream> #include<climits>//包含整型限制信息 #include<cfloat>//包含浮点类型限定的信息 using std::cout; using std::endl; int main(){ int n_int=INT_MAX; int n_long=LONG_MAX; int n_short=LONG_MAX; long long n_llong=LLONG_MAX; float n_float=FLT_MAX; double n_double=DBL_MAX; long double n_ldouble=LDBL_MAX;
cout<<"int is"<<sizeof(int)<<" bytes."<<endl; cout<<"short is"<<sizeof(short)<<" bytes."<<endl; cout<<"long is"<<sizeof(long)<<" bytes."<<endl; cout<<"long long is"<<sizeof(long long)<<" bytes."<<endl; cout<<"char is"<<sizeof(char)<<" bytes."<<endl; cout<<"bool is"<<sizeof(bool)<<" bytes."<<endl; cout<<"float is"<<sizeof(long long)<<" bytes."<<endl; cout<<"double is"<<sizeof(long long)<<" bytes."<<endl; cout<<"long double is"<<sizeof(long long)<<" bytes."<<endl<<endl; cout<<"maximum values:"<<endl; cout<<"int :"<<n_int<<endl; cout<<"short :"<<n_short<<endl; cout<<"long :"<<n_long<<endl; cout<<"long long :"<<n_llong<<endl; cout<<"flaot :"<<n_float<<endl; cout<<"double :"<<n_double<<endl; cout<<"long double:"<<n_ldouble<<endl<<endl;
cout<<"minimum int value:"<<INT_MIN<<endl; cout<<"Bits char byte :"<<CHAR_BIT<<endl;
return 0; }
运行结果
int is4 bytes.
short is2 bytes.
long is4 bytes.
long long is8 bytes.
char is1 bytes.
bool is1 bytes.
float is8 bytes.
double is8 bytes.
long double is8 bytes.
short is2 bytes.
long is4 bytes.
long long is8 bytes.
char is1 bytes.
bool is1 bytes.
float is8 bytes.
double is8 bytes.
long double is8 bytes.
maximum values:
int :2147483647
short :2147483647
long :2147483647
long long :9223372036854775807
flaot :3.40282e+038
double :1.79769e+308
long double:1.18973e+4932
int :2147483647
short :2147483647
long :2147483647
long long :9223372036854775807
flaot :3.40282e+038
double :1.79769e+308
long double:1.18973e+4932
上面的代码你可能看不懂,或者通过我讲过的helloword 懂一点,不过没关系,之后你会一一明白的。到时候在回来看也不迟,现在你唯一要记住的是c++种有那些数据类型
![再见](http://static.blog.csdn.net/xheditor/xheditor_emot/default/bye.gif)