C、C++和java中各类数据类型的长度

Cjava


32位机 64位机
char 1 1
int
4 4
long 
4 8
float 4 4
double 8 8
char * 4 8


2、C++spa

int型字长问题:操作系统

① C/C++规定int字长和机器字长相同;指针

② 操做系统字长和机器字长未必一致;code

③ 编译器根据操做系统字长来定义int字长;orm

  由上面三点可知,在一些没有操做系统的嵌入式计算机系统上,int的长度与处理器字长一致;有操做unicode

系统时,操做系统的字长与处理器的字长不必定一致,此时编译器根据操做系统的字长来定义int字长:"编译器

好比你在64位机器上运行DOS16系统,那么全部for dos16的C/C++编译器中int都是16位的;在64位机器上虚拟机

运行win32系统,那么全部for win32的C/C++编译器中int都是32位的"string

常见基本类型的字节大小

32位操做系统

char :1个字节(固定)

*(即指针变量): 4个字节(32位机的寻址空间是4个字节。同理64位编译器)(变化*)

short int : 2个字节(固定)

int: 4个字节(固定)

unsigned int : 4个字节(固定)

float: 4个字节(固定)

double: 8个字节(固定)

long: 4个字节

unsigned long: 4个字节(变化*,其实就是寻址控件的地址长度数值)

long long: 8个字节(固定)


64位操做系统

char :1个字节(固定)

*(即指针变量): 8个字节

short int : 2个字节(固定)

int: 4个字节(固定)

unsigned int : 4个字节(固定)

float: 4个字节(固定)

double: 8个字节(固定)

long: 8个字节

unsigned long: 8个字节(变化*其实就是寻址控件的地址长度数值)

long long: 8个字节(固定)
 

除了*与long随操做系统子长变化而变化外,其余的都固定不变(32位和64相比)

bool 1个字节  char 1个字节      int 4个字节   float 4个字节       doubl 8个字节   long long 8个字节

 

java

1.C++中,char是基础数据类型,8位,1个字节。byte不是基础数据类型,通常是typedef unsigned char byte;这样子的,也就是说,byte实际上是unsigned char类型,那么也是8位,1个字节。不一样的是,char能够表示的范围是-128-127,而byte能够表示的范围是0-255
2.Java

java中,charbyte都是基础数据类型,其中的byteC++中的char类型是同样的,8位,1个字节,-128-127。可是,char类型,是16位,2个字节,'\u0000'-'\uFFFF'
为何java里的char2个字节?
3.由于java内部都是用unicode的,因此java实际上是支持中文变量名的,好比string 世界 = "个人世界";这样的语句是能够经过的。

4.补充:

C++中,某些数据占多少位,多少字节,是与机器操做系统,硬件,有关系的。

java中,是与操做系统,硬件无关的,由于java是运行在虚拟机上的,因此数据大小都是固定的。
java中的long是固定8字节,64位;int4字节,32

相关文章
相关标签/搜索