一起學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!"的類型,因爲它是用雙引號括起來的,是字符串,跟使用單引號括起來的字符類型是有區別的。其實,字符串中的每個元素,是一個個的字符,字符串就是字符串起的串。

 

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