![]() |
【转帖】c和c++中的主要数据类型和字节大小
原创] C和C++中的主要数据类型和字节大小 (2008-05-20 11:42:51)
C/C++的写法是不科学和不严谨的。因为C和C++虽然语义,但是设计思想是结构化与面向对象. C标准规范与C++的标准规范也是两个文本。近来仔细研究了它们的数据类型,才知道其来龙去脉,真正做到其实所以然。 1、C语言定义了5种基本数据类型 char(字符), int(整数), float(单精度), double(双精度),void; 在32位机器上,sizeof的其值分别为: sizeof(char)=1, sizeof(int)=4, sizeof(float)=4, sizeof(double)=8; sizeof(char*)=4;(任何类型指针变量为32位即4个字节) 2、C++语言于C基础上增加2种数据类型: bool(布尔),wchar_t(宽字符); 在32位机器上,sizeof的其值分别为: sizeof(bool)=1, sizeof(wchar_t)=2, sizeof(bool*)=sizeof(wchar_t*)=4; 3、数据类型的基本修饰符: signed(有符号), unsigned(无符号),long(长整),short(短整) 4、测试代码: size_t nchar=sizeof(char); size_t nfloat=sizeof(float); size_t ndouble=sizeof(double); size_t nint = sizeof(int); a.Format("C语言数据类型长度:char=%d,float=%d,double=%d,int=%d",nchar,nfloat,ndouble,nint); AfxMessageBox(a); nint = sizeof(int*); nchar = sizeof(char*); ndouble = sizeof(double*); nfloat = sizeof(float*); a.Format("C语言指针类型长度:char*=%d,float*=%d,double*=%d,int*=%d",nchar,nfloat,ndouble,nint); AfxMessageBox(a); size_t nbool=sizeof(bool); size_t nwchar=sizeof(wchar_t); a.Format("C++新增数据类型长度:bool=%d,wchar_t=%d,bool*=%d,wchar_t*=%d",nbool,nwchar,sizeof(bool*),sizeof(wchar_t*)); AfxMessageBox(a); 5.理解代码 //A 采用32位寻址方式,则数组char**[4][4]占用字节=4*4*4字节(32bit)=64字节 //B #include "stdio.h" int main() { int *p; printf("%d", sizeof(p)); return 0; } |
所有的时间均为北京时间。 现在的时间是 07:58 AM. |