農林漁牧網

您現在的位置是:首頁 > 畜牧業

[小雨學程式設計之C#] 18.2 資料型別轉換,簡單資料型別

2021-08-14由 小雨學程式設計 發表于 畜牧業

為什麼是32768不是32767;int可以是負數嗎

[小雨學程式設計之C#] 18.2 資料型別轉換,簡單資料型別

想要弄明白資料型別轉換,首先要知道有哪些資料型別。從資料型別的複雜角度上說,資料型別有兩類:簡單資料型別和複雜資料型別其中複雜資料型別是由簡單資料型別和一些規則組成的,在之後的講解中我們會講到,現在我們先了解簡單資料型別。

對於簡單資料型別來說,又分為整數型別,浮點數型別和非數值型別。

整數型別:

sbyte 8位有符號整數 -128~127

byte 8位無符號整數 0~255

short 16位有符號整數 -32768~32767

ushort 16位無符號整數 0~65535

int 32位有符號整數 -2147483648~2147483647

uint 32位無符號整數 0~4294967295

long 64位有符號整數 -9223372036854775808~9223372036854775807

ulong 64位無符號整數 0~18446744073709551615

這裡我們看到不同的資料型別代表的數字有的是8位的有的是16位的,那麼這個位是啥意思?

我們都知道,日常生活中,我們使用的是0~9這樣的十進位制計數方法。

但是我們的計算機是由數字積體電路搭建的,而數字積體電路元器件最典型的兩個狀態就是“開”和“關”,於是我們就用0和1模擬這兩個狀態,就出現了二進位制計數方法。

每個0或1就是一個位,其中8位的意思是用8個連續的0或者1來表示整數,比如10換算成十進位制就是2、100換算成十進位制就是4、11111111換算成十進位制數字就是255。

注:我們之後會專門有一節來講計算機是怎麼用“位”來表示資料的,以及是怎麼進行計算的。

我們看到一些整形的定義中有有符號整數和無符號整數這又是什麼意思呢?

我們舉例來說:

我們的8位的意思,其實在說可以儲存資料的個數,也就是8位可以儲存256個數。

用byte(8位無符號整數)舉例,意思就是說,這8位都是資料儲存位,所以它只能表示從0到255的正數(一共256個數)。

但是sbyte(8位有符號整數),意思是說,將8位的最高位變成符號位,其餘的7位作為資料儲存的位,這樣就相當於將可以儲存的256個數劈成了兩半,一半用來表示正數,一半用來表示負數,但是整體還是256個數。因為負數前面需要有個一“-”號,所以就叫做有符號整數嘍。

不過我們也要注意,資料型別在基類庫中的對應:

sbyte System。SByte

byte System。Byte

short System。Int16

ushort System。UInt16

int System。Int32

uint System。UInt32

long System。Int64

ulong System。UInt64

通常我們的編寫環境中int和long所可以表示的資料區間基本足夠我們使用,但是如果有些程式對儲存有特殊要求,或者記憶體利用率要求比較高的時候,我們才會主動使用byte、short等資料範圍比較小的資料型別。比如計算機處理顏色的時候,就需要使用byte,因為顏色儲存的就是0~255之間的數,這就是一個典型對儲存有特殊要求的情況。

[小雨學程式設計之C#] 18.2 資料型別轉換,簡單資料型別

在實際程式設計過程中在使用無符號int或比int範圍大的整數型別的時候,宣告變數是有要求的:

uint u = 123U

uint u = 123u

long l = 123L

long l = 123l

ulong ul = 123UL

ulong ul = 123ul

但是在使用過程中,建議大家用大寫的結尾標識,因為在編碼的時候很容易將小寫的l看成數字1,如果換成大寫的L就不容易看錯。

浮點型別有:

float System。Single 32 位浮點數

double System。Double 64 位浮點數

decimal System。Decimal 128 位浮點數

浮點數主要用於處理含有小數的數值,其中float和double通常用於科學計算和圖形計算,但是decimal主要用於金融計算,我們可以理解成,當普通算算術的時候使用float和double,但是算錢的時候,比如一些會計軟體,證券軟體時候一定要用decimal

不過在宣告的時候也是有要求的:

float f=123。123f

float f=123。123F

double d=123。123d

double d=123。123D

decimal m=123。1232m

decimal m=123。123M

在這裡仍然建議大家用大寫字母的字尾,因為看的清楚呀!

三種簡單非值型別:

char System。Char 一個Unicode字元,儲存0~65536之間的數

bool System。Boolean 布林值,true或false

string System。String 一組字元

Unicode字元的意思可以理解成,用數字代表字元,也就是字元在計算機中儲存的方式是數字,當我們使用字元的時候,也就是在使用該字元在計算機中對應的數字,比如:

[小雨學程式設計之C#] 18.2 資料型別轉換,簡單資料型別

這裡我們看到,原來計算機中用97代表字元a,用98代表字元b。但是在這裡我們可能會產生一個疑問,這裡的char雖然在定義上以字元形式出現的,但是實際上操作的就是數字,那麼字元是不是可以進行四則運算?那我們就試試:

[小雨學程式設計之C#] 18.2 資料型別轉換,簡單資料型別

哈哈,這個就證明了字元是可以進行運算的,所以螢幕前的小夥伴當看到對字元進行運算的程式碼的時候不要疑惑哦!

string沒有儲存上限,它使用可變大小的記憶體,所以string沒有指定儲存空間,可以是由任意字元組成的字串,不過需要注意的是宣告char的時候要用英文小寫單引號包括。而且只能包括一個字元,string是用雙引號包括的一堆字元。

對於使用string過程中,有個特殊的知識點,我們都知道計算機中+號是進行加法運算的,但是一旦+號左右兩邊的運算元中有一個是字串,那麼此時的+號只起到連結的作用:

[小雨學程式設計之C#] 18.2 資料型別轉換,簡單資料型別

螢幕前的你,學會了嗎?