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
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++基本类型所占大小及表示范围的更多相关文章
- java中的char类型所占空间
java中统一使用unicode编码,所以每个字符都是2个字节16位.unicode包括中文,所以对String类计算长度的时候,一个中文和一个英文都是一个长度.String voice = &quo ...
- 【Java心得总结一】Java基本类型和包装类型解析
说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...
- MySql数据库类型bit等与JAVA中的对应类型【布尔类型怎么存】
用char(1):可以表示字符或者数字,但是不能直接计算同列的值.存储消耗1个字节 用tinyint:只能表示数字,可以直接计算,存储消耗2个字节 用bit: 只能表示0或1,不能计算,存储消耗小于等 ...
- java基本类型和包装类型的区别以及object的公共方法
Java的类型分为两部分,一个是基本类型(primitive),如int.double等八种基本数据类型: 一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节 ...
- 详解Java 8中Stream类型的“懒”加载
在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...
- Java笔记10-Object包装类型字符串
提纲: 1.java.lang.0bject中常用方法介绍 2.基本类型对应的包装类型的介绍 以及基本类型和包装类型之间的相互转换 3.java.lang.String 字符串处理类 java.lan ...
- Java中的Bigdecimal类型运算
Java中的Bigdecimal类型运算 双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行运算和处理.Java在java.math包中提 供的API类BigD ...
- java获取获得Timestamp类型的当前系统时间。以及java.util.date 、java.sql.Date之间的转换
java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new T ...
- Java Hour 50 日期类型
Plan List: 1 Java 中的日期类型 2 mysql 相关 3 java code style 鉴于本问题太过普通,所以参考文章满大街都是,因此本文内容基本为转载和验证. java.sql ...
随机推荐
- 【CodeForces 312B】BUPT 2015 newbie practice #3A Archer
题 SmallR is an archer. SmallR is taking a match of archer with Zanoes. They try to shoot in the targ ...
- Rootkit Hacking Technology && Defence Strategy Research
目录 . The Purpose Of Rootkit . Syscall Hijack . LKM Module Hidden . Network Communication Hidden . Fi ...
- 转-Android中自动连接到指定SSID的Wi-Fi
最近在做一个项目,其中涉及到一块“自动连接已存在的wifi热点”的功能,在网上查阅了大量资料,五花八门,但其中一些说的很简单,即不能实现傻瓜式的拿来就用,有些说的很详细,但其中不乏些许错误造成功能无法 ...
- 一个糟糕的Erlang练习题
好吧,用的语法很糟糕...但是至少是做了练习. 题目 %The sequence of triangle numbers is generated by adding the natural numb ...
- 单调队列 I
2009国家集训队徐持衡的论文<浅谈几类背包问题>里提到的一个经典问题: 长度限制最大连续和问题: 给出长度为 n 的序列 X i ,求这个序列中长度不超过 Lmax 的最大连续和. Im ...
- PHP输出表格的方法
<?php function table($n) //几行几列表 { echo'<table border="1" width="500" heig ...
- 创建泛类集合List以及数组转集合,集合转数组的应用
List<int> list = new List<int>(); list.Add(); list.Add(); list.Add(); list.AddRange(, , ...
- Assembly文件被锁定
使用 Assembly.LoadFile 加载程序集后 ,被加载的文件就会被锁定,之后就不能对其执行转移.删除等操作 为了解决次问题,我们可以先读取成字节流,然后转换成Assembly.代码如下:复制 ...
- Linux下修改计算机名
SuSe操作系统: 1. 修改/etc/HOSTNAME 文件 ,其内容为计算机名. 输入命令:vi /etc/HOSTNAME 使用键盘上的 x 键一个一个删除所有内容 ,然后使用键盘上的 i ...
- Windows部署WordPress
感谢原文作者,还是给个快速通道: http://www.cnblogs.com/huangcong/archive/2010/03/31/1701052.html 另:安装之后,运行速度会很慢,以下是 ...