1、C语言 中:
默认修饰符为:signed 有符号数,最高位为符号位,0:代表正数,1:代表负数 。负数在计算机中是以补码的形式存储的
当需要使用无符号类型时,添加unsigned 修饰符。
类型 | 符号表示 | 描述 | 取值范围 | 十六进制 | ||
字符 | (signed) char | 1字节8位有符号 | -128 ~ 127 (-2^7 ~ 2^7-1) | 0x00~0x7F:正数 0x80~0xFF:负数 | ||
unsigned char | 1字节8位无符号 | 0 ~ 255 (0 ~ 2^8-1) | 0x00~0xFF:正数 | |||
短整型 | short | 2字节16位有符号 | -2^15 ~ 2^15-1 | 0x0000~0x7FFF:正数 0x8000~0xFFFF:负数 | ||
unsigned short | 2字节16位无符号 | 0 ~ 2^16-1 | 0x0000~0xFFFF:正数 | |||
整型 | (signed) int | 4字节32位有符号 | -2^31 ~ 2^31-1 | 0x00000000~0x7FFFFFFF:正数 0x80000000~0xFFFFFFFF:负数 | ||
unsigned int | 4字节32位无符号 | 0 ~ 2^32-1 | 0x00000000~0xFFFFFFFF:正数 | |||
长整型 | (signed) long | 32位系统:4字节有符号 64位系统:8字节有符号 | -2^31 ~ 2^31-1 -2^63 ~ 2^63-1 | …… | ||
unsigned long | 32位系统:4字节有符号 64位系统:8字节有符号 | 0 ~ 2^32-1 0 ~ 2^64-1 | …… | |||
单精度 浮点数 | float | |||||
双精度 浮点数 | double |
其他:C语言类型修饰符总结
2、C++ 中:
较C语言,C++中新增了bool
布尔型:bool
1个字节,占8位,0为假,非0为真。详细说明:C++布尔类型(bool)
其余类型同C语言
3、C# 中:
类型 | 描述 | 范围 | 十六进制 |
bool | 8位布尔型 | Ture或False | |
char | 16位Unicode字符型 | U+0000 ~ U+ffff | |
sbyte | 8位有符号整型 | -2^7 ~ 2^7-1 | 0x00~0x7F:正数 0x80~0xFF:负数 |
byte | 8位无符号整型 | 0 ~ 2^8-1 | 0x00~0xFF:正数 |
short | 16位有符号整型 | -2^15 ~ 2^15-1 | 0x0000~0x7FFF:正数 0x8000~0xFFFF:负数 |
ushort | 16位无符号整型 | 0 ~ 2^16-1 | 0x0000~0xFFFF:正数 |
int | 32位有符号整型 | -2^31 ~ 2^31-1 | 0x00000000~0x7FFFFFFF:正数 0x80000000~0xFFFFFFFF:负数 |
uint | 32位无符号整型 | 0 ~ 2^32-1 | 0x00000000~0xFFFFFFFF:正数 |
long | 64位有符号整型 | -2^63 ~ 2^63-1 | …… |
ulong | 64位无符号整型 | 0 ~ 2^64-1 | …… |
float | 32位单精度浮点型 | 最多保留7位小数 | |
double | 64位双精度浮点型 | 最多保留16位小数 | |
decimal | 128位精确的十进制值 28-29有效位数 |
注:C#新增了byte,且char的用法有所变化
4、Java 中
类型 | 描述 | 范围 | |
boolean | 8位布尔型 | Ture或False | |
char | 16位Unicode字符型 | ||
byte | 8位字节型 | -2^7 ~ 2^7-1 | |
short | 16位短整型 | -2^15 ~ 2^15-1 | |
int | 32位整型 | -2^31 ~ 2^31-1 | |
long | 64位长整型 | -2^63 ~ 2^63-1 | |
float | 32位单精度浮点型 | ||
double | 64位双精度浮点型 |
Java与C#基本数据区别:
1、基本类型分为4种:整型、布尔类型、浮点类型、字符类型,只是C#特别多了个不是基本类型的decimal类型,用于财务计算,精确度很高但很少使用。
2、整型当中,java都是有符号整型,所以仅byte、short、int、long四种类型,占用位数和取值范围两者没区别,C#中多了另外四种无符号整型。值得注意的是,java语言中的byte类型,对应的是C#中的sbyte类型,而不是8位无符号整数byte类型。
3、布尔类型中,Java是用boolean表示,C#是用bool表示。
4、浮点类型都是float和double,只是java中float占用8位,而C#中7位;java中double占用16位,而C#中15位,所以取值范围两个语言中有细微差异。