一起学C#(六)

变量的类型

第二章 第3节 预定义数据类型

我们已经知道了变量可以代表一个具体的数值,那么这个代表的过程是怎样实现的呢?

每台计算机上都有内存,比如4G、16G,甚至更多。我们写的代码,被翻译成用机器语言表示的代码,在执行的时候,这些机器代码先是被放到内存里,然后再执行。

在程序执行的时候,我们代码里写的变量,同时也被放到了内存里,占据一定的内存空间,每个具体的数值,就是存放在这个空间里的。

比如我们代码中的“int i;”,i是一个整数型变量,在C#中,int型变量的长度是32位的,这个变量在内存中占用32位的空间,程序运行的时候,先是数值1通过“i=1;”被放在了这个空间里,它的值使用“Console.WriteLine(i);”显示到屏幕上之后,数值1314通过“i=1314;”被放到了这个空间里,当1314放在这里之后,数值1就被覆盖掉了,自然也就不存在了,这个变量所占用的内存里只剩下了1314。

我们可能会对长度是32感到一些奇怪,它的长度为什么不是30、20,而非要是32呢?

原来计算机是按字长处理数据的,最早的计算机字长是8位,即一次能处理长度为8个bit位的数据,一个bit位只能表示0或1。后来发展到16位、32位、64位。所以,在C#中,规定整数int类型的长度为32位,而不是30或20位,是为了适应计算机处理数据的方式。Windows操作系统分为32位和64位,也是这个样子的。

在我们以后的编程过程中,会遇到各式各样类型的数据,不只是int类型的数值。所以C#还规定了很多其它的类型。我们逐个进行学习吧:

1. 整数型

1). sbyte

sbyte是8位有符号的整数,它能保存的数值范围是-128 ~ 127,共有256个数。超出这个范围,就要考虑使用别的数据类型了。sbyte是signed byte的缩写,中文的意思是有符号字节。其实,一个字节就包含8个bit位,即长度为8。

2). short

short是16位有符号的整数,它能保存的数值范围是-3,2768 ~ 3,2767,共有6,5536个数。

3). int

int是32位有符号的整数,它能保存的数值范围是-21,4748,3648 ~ 21,4748,3647,共有42,9496,7296个数。

4). long

long是64位有符号的整数,它能保存的数值范围是-922,3372,0368,5477,5808 ~ 922,3372,0368,5477,5807,共有1844,6744,0737,0955,1616个数。

5). byte

byte是8位无符号的整数,它能保存的数值范围是0 ~ 255,共256个数。

6). ushort

ushort是16位无符号的整数,它能保存的数值范围是0 ~ 6,5535,共6,5536个数。

7). uint

uint是32位无符号的整数,它能保存的数值范围是0 ~ 42,9496,7295,共42,9496,7296个数。

8). ulong

ulong是64位无符号的整数,它能保存的数值范围是0 ~ 1844,6744,0737,0955,1615,共1844,6744,0737,0955,1616个数。

 

2. 浮点类型

浮点类型通常用来表示带有小数部分的数值,因为小数点在数值里可以前后移动,所以也叫浮点。

1). float

float是32位单精度浮点数,它能大致能表示7位十进制数,可以用于较小的浮点数。

2). double

double是64位双精度浮点数,它能大大致表示15位十进行制数,可以用来表示较大的浮点数。

一般情况下,代码中出现的小数,编译器一般假定是double类型的,如果想指定这个数值是float类型的,就要在数值的后面加上一个字母F,或f。如:

float f = 12.3F;

float flt = 520.1314f;

 

3. decimal类型

有些情况下,我们还需要处理更高精度的数值,它甚至超过了15位十进制数,在这种情况下,可以使用decimal类型,它占用128位存储空间,能提供28位十进制数的处理能力,如:

decimal d = 12.30M;

 

4. bool类型

布尔型,它仅能表示true或false。C#中,不像C或C++那样,bool值不能和数值相互隐式转换,如果试图把0或1赋值给一个布尔变量,编译器就会报错。

 

5. 字符类型

char类型可以保存单个字符,它表示一个16位的(Unicode)字符。字符的值使用单引号括起来,如:

char c = 'A';

表示把字符A赋值给变量c,即把字符A放到c变量占用的存储空间里。

我们以前接触过类似"Hello, world!"的类型,因为它是用双引号括起来的,是字符串,跟使用单引号括起来的字符类型是有区别的。其实,字符串中的每个元素,是一个个的字符,字符串就是字符串起的串。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章