C++学习之旅——C++中数据类型所占的字节

时间:2023-01-11 17:40:17

先来列一下C++的数据类型:

整型:int,long。这两个还分signed(有符号)和unsigned(无符号)的,当然有符号和无符号所占字节大小是一样的,就不管他了。

布尔型:bool         

字符型:char,这两个还分signed(有符号)和unsigned(无符号)的,不过没多大用,用在转化为数值时就用区别。

浮点型:float,double,long double。

这只能上代码验证了,貌似机子不同数据类型所占大小也不同,太威武了,我就检查下我这个32位windows系统电脑吧。我用的IDE是Code::Blocks,发现挺好用的,主要是工程文件小,不像vs2010建个工程就大得很,哥这小硬盘吃不消啊(题外话)。

先看整型的吧,代码如下:

1234567891011121314 #include
<iostream>
 using namespace std; int main(){    int a;    long b;    int Byteof_int=sizeof(a);    int Byteof_long=sizeof(b);    cout << "int:" <<Byteof_int<<endl;    cout << "long:" <<Byteof_long<<endl;    return 0;}

结果显示:

int:4

long:4

int和long都是占4个字节(即32位)。

其他数据类型验证吧上面代码数据类型替换下就是了,得出下面的结果:

bool:1

char:1

wchar_t:2

float:4

double:8

特别要注意的时,对于指针类型,都占4个字节,指针指向的是一个地址,地址是int类型的,32位操作系统就是4字节。当然如果是64位操作系统那就是8字节了。

此外,int这个类型占操作系统一个内存单元大小。早先16位操作系统一个内存单元是16位,所以是2个字节;32位系统一个内存单元是是32位,所以是4字节;64位操作系统一个内存单元是16位,故占8个字节。


另外还需要注意,以下情况为影响分配情况:

1、函数所占字节

2、内存变量对齐方式

详情请看下两篇文章