一、15种预定义类型
1、非数值类型
(1)布尔类型
@1、一个布尔类型的字面值使用关键字true和false。
@2、在c#中数值类型不具有布尔意义,即0不代表false,非0也不代表true。
@3、虽然从理论上说,一个bit就能容纳一个布尔类型的值,但布尔数据类型的实际大小为一个字节。
(2)字符类型
@1、为了输入一个字符类型的字面量,需要将字符放到一对单引号中。
@2、转义字符:就是不能直接插入源代码中,而是需要进行特殊处理即在这些字符前加一个反斜杠(\)。
@3、转义序列:将反斜杠和转义字符代码统称为转义序列。
@4、常见的转义字符如下
转义序列: \' \" \\ \0 \a \b \f \n \r \t \v \uxxxx
字符名称: 单引号 双引号 反斜杠 Null Alert 退格 换页 换行 回车 水平制表符 垂直制表符 十六进制Unicode字符
\x[n][n][n]n 十六进制Unicode字符(前三个占位符可选)\uxxxx的长度可变版本
\uxxxxxxxx Unicode转义序列,用于创建代理项对
@5、知识补充:char用于表示16bit字符,其取值范围对应于Unicode字符集。但是,并不是所有Unicode字符都可以用一个16bit char来表示。刚开始提出Unicode概念时,它的设计者一位16bit已经足够。但随着支持的语言越来越多,才发现当初的假定是错误的。结果是,一些Unicode字符要由一对称为“代理项”的char构成,共32bit。
代理项:某些语言的文字编码要用两个16bit来表示。第一个代码值称为高位代理项,第二个代码值称为低位代理项。在代理项的帮助下,Unicode可以表示100多万个不同的字符。美国和欧洲地区很少使用代理项,东亚国则很常用。
2、整数类型(取值范围求法原理????组成原理中定点数在计算机中的表示)
类型 大小 取值范围(包括边界) BCL(base class library)名称
sbyte 8bit -2^7---2^7-1(-128---127) System.SByte
byte 8bit 0----2^8-1(0----255) System.Byte
short 16bit -2^15-----2^15-1(-32768---32767) System.Int16
ushort 16bit 0---2^16-1(0----65535) System.UInt16
int 32bit -2^31-----2^31-1 System.Int32
uint 32bit 0---2^32-1 System.UInt32
long 64bit -2^63-----2^63-1 System.Int64
ulong 64bit 0---2^64-1 System.UInt64
@1、一个整数值(没有小数点)通常默认为int,前提是该值不是太大,以至于无法用int来存储。如果值太大,编译器会把它解释成long。此外,编译器允许想一个非int的数值类型赋值,前提是字面值对于目标数据类型来说是合法的。如short s=42,byte =77。
3、浮点类型(取值范围的求法 组成原理浮点数在计算机中的表示????)
类型 大小 范围 BCL名称 有效数字
float 32bit 1.5*10^ -45----3.4*10^38(前都有正负号) System.Single 7
double 64bit 5.0*10^ -324----1.7*10^308 System.Double 15---16
@1、浮点数的精度是可变的。如果读取本来是0.1的一个浮点数,那么可能很容易读取成0.099 999 999 999 999 999 或0.100 000 000 000 000 000 1或者其他非常接近0.1的一个数
@2、如果输入一个带小数点的字面值,编译器会自动把它解释成double类型。除非在其后面加上f ,编译器才认为它是float类型。
4、decimal类型
类型 大小 范围 BCL名称 有效数字
decimal 128bit 1.0*10^ -28----大约7.9*10^28(前都有正负号) System.Decimal 28---29
decimal类型与浮点数的区别:
@1、decimal类型保证范围内的所有十进制数都是完全准确地,0.1就是0.1,而不是一个近似值;与此相反,用浮点数表示十进制数,可能造成舍入错误。
@2、decimal类型的基数是十进制的,浮点类型的基数是二进制的。
@3、decimal类型具有比浮点类型更高的精度,但它的范围较小。所以从浮点类型转换为idecimal可能发生溢出错误。
@4、decimal类型的计算速度要稍微慢一些。
@5、decimal适合大二精确的计算,尤其是金融计算。