C#/Java/C/C++基本类型所占大小及表示范围

C/C++的数据类型:

一,整型

Turbo C:
   [signed] int 2Byte//有符号数,-32768~32767
   unsigned int 2Byte //无符号数,只能表示整数0~65535

[signed] short [int] 2Byte

unsigned short [int] 2 Byte

long [int] 4 Byte

unsigned long [int] 4 Byte

Visual C++ 6.0:

[signed] int 4Byte
   unsigned int 4Byte

[signed] short [int] 2Byte

unsigned short [int] 2 Byte

long [int] 4 Byte

unsigned long [int] 4 Byte
long int 4Byte

二.实型
float 4Byte
double 8Byte
long double 16Byte

三.字符型
char 1Byte

Java的数据类型:

一,整型

byte  1个字节
short 2个字节
int   4个字节
long  8个字

二.实型

float 4个字节
double 8个字节

三.字符型

char 2个字节

四.对象型

Java中数组和String类型的都被解释为对象

五.其它

Boolean 可以认为boolean型占八分之一个字节,即1bit,但是它的大小是不明确的,

视编译器而定

1字节=8bit 即在计算机中用8个0或1表示一个单位

一个汉字占2个字节,一个英文字符占1个字节

字长 = 字 = 计算机一次能处理的指令长度

1:计算机使用byte类型,0000‘0001

c# 数据类型占用的字节数

bool -> System.Boolean (布尔型,其值为 true 或者 false)

byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)

sbyte -> System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)

char -> System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符)

short -> System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)

ushort -> System.UInt16 (无符号短整型,占 2 字节,表示 16 位正整数,范围 0 ~ 65,535)

uint -> System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 4,294,967,295)

int -> System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到 2,147,483,647)

float -> System.Single (单精度浮点型,占 4 个字节)

ulong -> System.UInt64 (无符号长整型,占 8 字节,表示 64 位正整数,范围 0 ~ 大约 10 的 20 次方)

long -> System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大约 -(10 的 19) 次方 到 10 的 19 次方)

double -> System.Double (双精度浮点型,占8 个字节)

【PS】

那么,引用类型占几个字节呢?对象类型可以理解为指针变量,指针变量保存的是地址,32位机寻址就是32位,所以是4字节,不过这是在线程栈中占用4个字 节,用来指向托管堆中实际内容的首地址,值是存在堆里的,具体在堆里占几个字节就不一定了(不过赋值为NULL的时候,不在堆里分配空间,倒是可以认为它 就只占那4个字节……)我试过一个空类(无属性,无字段,无方法,object为基类),是占12个字节(里面包有头部的基类指针还有尾部的线程标识神马 的各4个字节,其余是属性占用的空间,这个不确定。。)。

在JAVA中一共有八种基本数据类型,他们分别是

byte、short、int、long、float、double、char、boolean

整型

其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样

byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)

short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)

int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)

long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)

可以看到byte和short的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。

在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的 B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型 的,就一定要在数据后面加“L”。

浮点型

float和double是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同

float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节

double 1.797693e+308~ 4.9000000e-324 占用8个字节

double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据是float型的,可以在数据后面加上“F”。

浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。

boolean型(布尔型)

这个类型只有两个值,true和false(真和非真)

boolean t = true;

boolean f = false;

char型(文本型)

用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容

字符的存储范围在/u0000~/uFFFF,在定义字符型的数据时候要注意加‘ ‘,比如 ‘1‘表示字符‘1‘而不是数值1,

char c = ‘ 1 ‘;

我们试着输出c看看,System.out.println(c);结果就是1,而如果我们这样输出呢System.out.println(c+0);

结果却变成了49。

如果我们这样定义c看看

char c = ‘ /u0031 ‘;输出的结果仍然是1,这是因为字符‘1‘对应着unicode编码就是/u0031

char c1 = ‘h‘,c2 = ‘e‘,c3=‘l‘,c4=‘l‘,c5 = ‘o‘;

System.out.print(c1);System.out.print(c2);System.out.print(c3);System.out.print(c4);Sytem.out.print(c5);

String

在前面我们看到过这样的定义:

String s = "hello";

System.out.println(s);跟上面的5条语句组合起来的效果是一样的,那么String是个什么呢?String是字符串,它不是基本数据类型,它是一个类。


c语言数据类型

1.整型数据类型
C定义了5种整型数据类型。
整型数据类型表

序号 类型名称 说明 字节数 取值范围
1 signed char 有符号的单字节整数类型 1 -128~+127
2 short int 短整型 2 -32768~+32767
3 int 整型 4 -2147438648~+2147438647
4 long int 长整型 4 -2147438648~+2147438647
5 long long int 长长整型 8 -9223372036854775808~+-9223372036854775807

2.无符号整数类型
对应有符号类型,还有无符号整数类型。
无符号整数类型表

序号 类型名称 字节数 取值范围
1 unsigned char 1 0~255
2 unsign short int 2 0~65535
3 unsigned int 4 0~4294967295
4 unsigned long int 4 0~4294967295
5 unsign long long int 8 0~18446744073709551615

3.整型常量 
整型常量是指用以表示整型数值的常量,分为短整型(short int)、整型(int)、长整型(long int )和长长整型(long long int)四种。C默认整型(int)。 各种类型整型常量进制表示表(后缀不区分大小写)

序号 数据类型 八进制 十进制 十六进制
1 整型 0112 74 0x4a
2 长整型(l) 0112l 74l 0x4al
3 长长整型(ll) 0112ll 74ll 0x4all
4 无符号整型(u) 0112u 74u 0x4au
5 无符号长整型(ul) 0112ul 74ul 0x4aul
6 无符号长长整型(ull) 0112ull 74ull 0x4aull

4.字符数据类型 
C语言中字符型数据只有一种,即char型数据。一般也把char直接称为字符型。字符型占用内存空间最少,一般占用一个字节,存储在char类型变量的整数可以表示为有符号或无符号的值,这取决于编译器。

5.字符变量
字符变量是用于存储字符型数值的变量。字符型变量也分为两种:有符号和无符号型。

6.浮点型数据类型
C语言定义了三种浮点数据类型:
•float,单精度
•double,双精度
•long double,长双精度
C标准中对不同类型的浮点数有不同的规定,编译器不同或硬件条件不同,字节长度也不相同。

浮点型的字节长度、精度、数量级范围和输出输入格式表

序号 数据类型 字节长度 精度 数量级范围 printf和scanf格式
1 float(f) 4 7 -38~38 %f
2 double 8 约16 -308~308 %f
3 long double(1) 12 约19 -4932~4932 %llf

7.浮点型精度
浮点型精度从低到高排列为float、double和long long double。

8.浮点型的存储方式
浮点型数值以科学计数法的表示形式存储在内存中。浮点型的内存形式包含三个部分:
1)符号位
符号位浮点型的符号位只有一位,为最高位。该位为1,表示负数,该位为0,为非负数。
2)指数位
浮点型的指数位以补码形式存储,是科学计数法的指数部分。
3)基数位
基数位是浮点型的最后一位,这个位决定数值的精度。
浮点型储存分段表

序号 数据类型 符号位 指数位 基数位 偏差值
1 float 1 8 23 127
2 double 1 11 52 1023
3 long double 1 15 64 16383

c++语言基本数据类型

C++基本数据类型有字符型(char)、整数类型(int)、浮点型(float)、双精度型(double)和无值类型(void),下表给出各种基本类型和内存中的位数和表示数值的范围(对于字符型存储的是ASCII码):

基本数据类型

类型 类型名
位数

范围
字符型 char
8

-128 ------ 127
整型 int
16

-32768 ------ 32767
浮点型 float
32

3.4E-38 ------ 3.4E+38
双精度型 double
64

1.7E-308 ------ 1.7E+308
无值类型 void
0

0

类型名前可以加修饰符(void类型除外),修饰符有 signed(带符号的)、 unsigned(无符号的)、 short(短的)和
long(长的)。signed 和 unsigned 用于字符型或整型,short 和 long 可用于整型,还可用于双精度型,如下表所示:

基本数据类型和修饰符

类型 类型名
位数

范围
字符型 char
8

-128 ------ 127
signed char
8

-128 ------ 127
unsigned char
8

 0 ------ 255
整型 int
16

-32768 ------ 32767
signed int
16

-32768 ------ 32767
unsigned int
16

  0 ------ 65535
short int
16

-32768 ------ 32767
signed short int
16

-32768 ------ 32767
unsigned short int
16

  0 ------ 65535
long int
32

-2,147,483,648 ---- 2,147,483,647
signed long int
32

-2,147,483,648 ---- 2,147,483,647
unsigned long int
32

  0 ----------------4,294,967,295
浮点型 float
32

3.4E-38 ------ 3.4E+38
双精度型 double
64

1.7E-308 ------ 1.7E+308
long double
80

3.4E-4932 ------ 1.1E+4932

当用 signed 、unsigned 、short 和 long 修饰 int 时,int 可省略。

字符型实际上是一个字节的整型,浮点型和双精度型表示实数。

注:不同编译系统,整数的存储长度不同。对于16位的编译系统,int为2字节;而对于32位的编译系统,int为4字节。可以用sizeof运算符测试。如:

cout<<sizeof(int)<<endl;

输出结果是字节数。

C#/Java/C/C++基本类型所占大小及表示范围,布布扣,bubuko.com

时间: 2024-10-23 13:36:01

C#/Java/C/C++基本类型所占大小及表示范围的相关文章

java中的char类型所占空间

java中统一使用unicode编码,所以每个字符都是2个字节16位.unicode包括中文,所以对String类计算长度的时候,一个中文和一个英文都是一个长度.String voice = "好声音"; System.out.println(voice.length());输出的是3 但是在C语言中,一个英文占一个字节,一个中文占两个字节,所以使用strlen("好声音"),输出是6

32和64位编译器各种类型所占大小

多看看就背住了: 32位编译器:32位系统下指针占用4字节       char :1个字节       char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节.同理64位编译器)       short int : 2个字节       int:  4个字节       unsigned int : 4个字节       float:  4个字节       double:   8个字节       long:   4个字节       long l

MySql数据库类型bit等与JAVA中的对应类型【布尔类型怎么存】

用char(1):可以表示字符或者数字,但是不能直接计算同列的值.存储消耗1个字节 用tinyint:只能表示数字,可以直接计算,存储消耗2个字节 用bit: 只能表示0或1,不能计算,存储消耗小于等于一个字节. 总结: 如果无扩展需求,仅仅表示2值逻辑的话, Bit 绝对是首选 如果有扩展需求,以后可能多余2个值,就用 tinyint char不考虑,写代码时要带单引号,超麻烦 转: MySql数据库类型bit等与JAVA中的对应类型 2018年12月04日 16:43:58 Ming3394

java基础之基本类型(二)

在程序设计中经常用到一系列类型,他们需要被特殊对待,我们称之为基本类型.因为new将对象存储在“”堆里,所以用new创建一个对象,如特别小.简单的变量,往往不是很有效. 因此,对于这些类型,java不用new来创建变量,而是创建一个并非是引用的“自动”变量.这个变量直接存储“值”,并置于堆栈中,因此更加高效. boolean 类型所占存储空间的大小没有明确指定,仅定义为能够取字面值true或false. 基本类型具有包装器类,使得可以在对中创建一个非基本对象,用来表示对应的基本类型,例如: ch

Java 日期时间 Date类型,long类型,String类型表现形式的转换 (转)

Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型java.util.Date dt = new Date();System.out.println(dt.toString());   //java.util.Date的含义long lSysTime1 = dt.getTime() / 1000;   //得到秒数,Date类型的getTime()返回毫秒数 2.由long类型转换成Date类型SimpleDat

一个int类型究竟占多少个字节

一个int占多少个字节? 这个问题我们往往得到的答案是4. 可是int究竟占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes match the ILP32LL model, which is what most compilers adhere to on 32-bit platforms. The LP64 model is the de facto standard for compilers that genera

C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义(转载)

C#与Java对比学习:类型判断.类与接口继承.代码规范与编码习惯.常量定义 类型判断符号: C#:object a;  if(a is int) { }  用 is 符号判断 Java:object a; if(a instanceof Integer) { } 用 instanceof 符号判断 类与接口的继承: C#:public class MDataRow : List<MDataCell>, IDataRecord, ICustomTypeDescriptor Java:publi

java 操作数据库clob类型大字段

java 操作数据库clob类型大字段,处理工具类如下: package org.shefron.utils; import java.io.StringReader; import java.sql.Clob; import java.sql.PreparedStatement; import java.sql.SQLException; public class ClobUtils { public final static String getValueFromClob(Clob clob

hibernate Java 时间和日期类型的 Hibernate 映射

基础知识: 在 Java 中, 代表时间和日期的类型包含: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中还提供了 3 个扩展了 java.util.Date 类的子类: java.sql.Date, java.sql.Time 和 java.sql.Timestamp, 这三个类分别和标准 SQL 类型中的 DATE, TIME 和 TIMESTAMP 类型相应 在标准 SQL 中, DATE 类型表示日期, TIME 类型表示时间,