【c++】基本数据类型

基本数据类型



C++11语言有一组基本类型,对应于计算机的基本存储单元和使用这些单元去保存数据的一些常用方式 ,
--------------------------------------------------------------------------------------------
布尔型                    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                                                                   |

------------------------------------------------------------------------------------------------

其中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                         

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.
maximum values:
int        :2147483647
short      :2147483647
long       :2147483647
long long  :9223372036854775807
flaot      :3.40282e+038
double     :1.79769e+308
long double:1.18973e+4932

上面的代码你可能看不懂,或者通过我讲过的helloword 懂一点,不过没关系,之后你会一一明白的。到时候在回来看也不迟,现在你唯一要记住的是c++种有那些数据类型 再见







  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值