在C#語(yǔ)言中,數(shù)據(jù)類型按其本身在內(nèi)存中被存儲(chǔ)的方式,可以將其歸為兩類:值類型和引用類型。其區(qū)別在于,值類型的變量直接存放實(shí)際的數(shù)據(jù),而引用類型的變量存放的則是數(shù)據(jù)的地址,即對(duì)象的引用。
在這里首先介紹值類型。C#的值類型包括三種:簡(jiǎn)單類型、結(jié)構(gòu)類型和枚舉類型。其中,簡(jiǎn)單類型又包括:整數(shù)類型、浮點(diǎn)類型、小數(shù)類型、布爾類型和字符類型。下面我將一一作以介紹。
1.整數(shù)類型
按照,數(shù)據(jù)在內(nèi)存中存儲(chǔ)時(shí)所占的位長(zhǎng)及是否有符號(hào)位,我們又可以把整數(shù)類型分成以下八種,其所占的位長(zhǎng)和取值范圍已經(jīng)標(biāo)在表格中:
|
類型 |
描述 |
取值范圍 |
字節(jié)數(shù) |
|
byte |
無(wú)符號(hào)整數(shù) |
0~255 |
1 |
|
sbyte |
有符號(hào)整數(shù) |
-128~127 |
1 |
|
short |
有符號(hào)短整型 |
-32768~32767 |
2 |
|
ushort |
無(wú)符號(hào)短整型 |
0~65535 |
2 |
|
int |
有符號(hào)整型 |
-2147483648~2147483647 |
4 |
|
uint |
無(wú)符號(hào)整型 |
0~4294967295 |
4 |
|
long |
有符號(hào)長(zhǎng)整型 |
-9223372036854775808~ 9223372036854775807 |
8 |
|
ulong |
無(wú)符號(hào)長(zhǎng)整型 |
0~188446744073709551615 |
8 |
系統(tǒng)默認(rèn)整數(shù)類型為int。
在這里給大家解釋一下關(guān)于有符號(hào)整型和無(wú)符號(hào)整型的含義。在計(jì)算機(jī)中,數(shù)據(jù)是以二進(jìn)制的形式存儲(chǔ)的。如十進(jìn)制的9,在內(nèi)存中存儲(chǔ)的二進(jìn)制數(shù)為(以8位計(jì)):0000 1001,但是如何表示一個(gè)數(shù)的正負(fù)呢,聰明的人們總是有辦法的,就把二進(jìn)制的最高位騰出來(lái)表示正負(fù)號(hào),并且規(guī)定,最高位如果是1,則其所表示的數(shù)就是負(fù)數(shù),如果是0,其所表示的數(shù)就是正數(shù)。問(wèn)題似乎解決了,但是我們想一想,如果用這種方法的話,0又如何表示呢?假設(shè)在8位的內(nèi)存單元中,存儲(chǔ)的二進(jìn)制數(shù)據(jù)是1000 0000,其轉(zhuǎn)換為十進(jìn)制數(shù)代表什么呢,按照這個(gè)規(guī)則,其應(yīng)該是-0;如果存儲(chǔ)的二進(jìn)制數(shù)是0000 0000,其轉(zhuǎn)換成十進(jìn)制數(shù)又是什么呢?我們可以知道應(yīng)該是+0;實(shí)際上,我們知道,-0和+0在十進(jìn)制數(shù)中應(yīng)該是相等相同的,可是在內(nèi)存中表示方法不唯一,這樣給計(jì)算機(jī)處理數(shù)據(jù)帶來(lái)很大的麻煩。聰明的人們又想出了另外一個(gè)方法,即正數(shù)還是用剛才的方法來(lái)表達(dá),而負(fù)數(shù)呢用補(bǔ)數(shù)來(lái)表示。
什么是補(bǔ)數(shù)呢?這里僅給出算法,更多的可參考相關(guān)書(shū)籍的說(shuō)明。對(duì)于負(fù)數(shù),其補(bǔ)數(shù)等于其反碼+1,反碼即對(duì)應(yīng)的二進(jìn)制數(shù),除符號(hào)位之外,原來(lái)是0的變成1,原來(lái)是1的變成0,則-0的反碼就是1111 1111,加1之后的補(bǔ)碼為:1 0000 0000,然而,在8位內(nèi)存單元中,1是溢出去的,只有后面的8個(gè)0才是有效的表示數(shù)的位,這樣負(fù)數(shù)0和正數(shù)0都一樣了。好了,現(xiàn)在回到正題。
2.浮點(diǎn)類型(float 和 double)
有兩種,一種是單精度的即:float型的,另外一種是雙精度型的即:double型的,這與其他語(yǔ)言如Java和C++相同。其中:float型的占4個(gè)字節(jié),取值范圍為:±1.5×10-28~3.4×1038其精度為7,即可表示7位數(shù)的小數(shù),如123.3434,1.345628,1234.123。如果超過(guò)7位,則會(huì)進(jìn)行四舍五入,如寫(xiě)成:234.54567,實(shí)際上系統(tǒng)處理成234.5457,如果整數(shù)部分超過(guò)7位,則以科學(xué)計(jì)數(shù)法進(jìn)行表示,而且超過(guò)部分會(huì)被四舍五入,如浮點(diǎn)數(shù)12345747,則輸出時(shí)為1.234575E+07。
雙精度型的浮點(diǎn)數(shù)在內(nèi)存中占8個(gè)字節(jié),其取值范圍為:±5.0×10-324~1.7×10308,精度為15或16,特點(diǎn)如單精度。
系統(tǒng)默認(rèn)小數(shù)的類型為雙精度型的,這意味著float f1=4.4;這樣的語(yǔ)句將無(wú)法通過(guò)編譯,因?yàn)樵谶@里,4.4系統(tǒng)默認(rèn)為雙精度型的,不能將高精度的4.4賦給低精度的f1變量,解決辦法,是在數(shù)字后加上字母f或F,表示該變量為單精度型的,即上面的語(yǔ)句應(yīng)該寫(xiě)成:
float f1 = 4.4f;或者 float f1 = 4.4F;
3.小數(shù)類型(decimal)
在內(nèi)存中占16個(gè)字節(jié),一般用于對(duì)于精度有較高要求的場(chǎng)合,如表示原子的半徑等,其數(shù)值范圍為:±1.0×10-28~7.9×1028,可達(dá)29位小數(shù)。由于,系統(tǒng)默認(rèn)小數(shù)為double型的,在給decimal賦值時(shí),在數(shù)字后面要加m或M。如:
decimal dc = 23.567m;或者 decimal dc = 23.567M;
否則將給出編譯錯(cuò)誤:不能隱式地將 Double 類型轉(zhuǎn)換為“decimal”類型;請(qǐng)使用“M”后綴創(chuàng)建此類型。
4.布爾類型(bool)
布爾類型是以英國(guó)著名數(shù)學(xué)家布爾的名字進(jìn)行命名的,其值僅有兩種:true和false。一般用于邏輯判斷和條件表達(dá)式中,以后我們要介紹的選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和邏輯操作符,將會(huì)更多地了解這種數(shù)據(jù)類型。
5.字符類型
字符類型與C++中的字符類型略微有點(diǎn)不同,那就是在C++中字符類型占1個(gè)字節(jié),以ASCII碼進(jìn)行存儲(chǔ),而在C#中,占2個(gè)字節(jié),是以Unicode碼進(jìn)行存儲(chǔ)的。這是什么意思呢?ASCII碼是美國(guó)國(guó)家信息標(biāo)準(zhǔn)交換碼,它把26個(gè)大小寫(xiě)字母和10個(gè)數(shù)字、標(biāo)點(diǎn)符號(hào),以及其它常用的符號(hào)各以一個(gè)字節(jié)存儲(chǔ),至多可以表示存儲(chǔ)256個(gè)字符。但是,隨著計(jì)算機(jī)在其它國(guó)家的推廣運(yùn)用,這種ASCII編碼卻出現(xiàn)了問(wèn)題:即不夠用了,因?yàn)?個(gè)字節(jié)8位,至多表示256種情況,而就我們中國(guó)而言,文字成千上萬(wàn),怎么來(lái)表示呢,還有韓文,日文,俄文等,于是人們用2個(gè)字節(jié)來(lái)表示這些信息。造成各國(guó)編碼不一致的情形,后來(lái)有人就把他統(tǒng)一起來(lái),不管是哪個(gè)國(guó)家的編碼統(tǒng)一使用2個(gè)字節(jié),這就是Unified Code(統(tǒng)一碼),即Unicode。照這樣講,一些字符和數(shù)字之間是可以進(jìn)行轉(zhuǎn)換的,的確如此,如下:
int iA = 'A'+23;
這里的iA應(yīng)該是多少呢?告訴你,應(yīng)該是88,怎么來(lái)的呢,因?yàn)樽址?rsquo;A’,在內(nèi)存中以其Unicode碼65進(jìn)行存儲(chǔ),這樣的話,字符型可以自動(dòng)向整型int進(jìn)行轉(zhuǎn)換,所以結(jié)果為88。
另外,對(duì)于字符類型,是以單引號(hào)引起來(lái)的,千萬(wàn)不要用成雙引號(hào)。這是兩個(gè)不同的概念。如果用成雙引號(hào)就成字符串了。
對(duì)于結(jié)構(gòu)體和枚舉類型將單獨(dú)列出,敬請(qǐng)關(guān)注。
新聞熱點(diǎn)
疑難解答