麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

C#的值類型運用詳解

2023-05-09 18:58:29
字體:
來源:轉載
供稿:網友

       在C#語言中,數據類型按其本身在內存中被存儲的方式,可以將其歸為兩類:值類型和引用類型。其區別在于,值類型的變量直接存放實際的數據,而引用類型的變量存放的則是數據的地址,即對象的引用。

在這里首先介紹值類型。C#的值類型包括三種:簡單類型、結構類型和枚舉類型。其中,簡單類型又包括:整數類型、浮點類型、小數類型、布爾類型和字符類型。下面我將一一作以介紹。

1.整數類型

按照,數據在內存中存儲時所占的位長及是否有符號位,我們又可以把整數類型分成以下八種,其所占的位長和取值范圍已經標在表格中:

類型

描述

取值范圍

字節數

byte

無符號整數

0~255

1

sbyte

有符號整數

-128~127

1

short

有符號短整型

-32768~32767

2

ushort

無符號短整型

0~65535

2

int

有符號整型

-2147483648~2147483647

4

uint

無符號整型

0~4294967295

4

long

有符號長整型

-9223372036854775808~ 9223372036854775807

8

ulong

無符號長整型

0~188446744073709551615

8

系統默認整數類型為int。

在這里給大家解釋一下關于有符號整型和無符號整型的含義。在計算機中,數據是以二進制的形式存儲的。如十進制的9,在內存中存儲的二進制數為(以8位計):0000 1001,但是如何表示一個數的正負呢,聰明的人們總是有辦法的,就把二進制的最高位騰出來表示正負號,并且規定,最高位如果是1,則其所表示的數就是負數,如果是0,其所表示的數就是正數。問題似乎解決了,但是我們想一想,如果用這種方法的話,0又如何表示呢?假設在8位的內存單元中,存儲的二進制數據是1000 0000,其轉換為十進制數代表什么呢,按照這個規則,其應該是-0;如果存儲的二進制數是0000 0000,其轉換成十進制數又是什么呢?我們可以知道應該是+0;實際上,我們知道,-0和+0在十進制數中應該是相等相同的,可是在內存中表示方法不唯一,這樣給計算機處理數據帶來很大的麻煩。聰明的人們又想出了另外一個方法,即正數還是用剛才的方法來表達,而負數呢用補數來表示。

什么是補數呢?這里僅給出算法,更多的可參考相關書籍的說明。對于負數,其補數等于其反碼+1,反碼即對應的二進制數,除符號位之外,原來是0的變成1,原來是1的變成0,則-0的反碼就是1111 1111,加1之后的補碼為:1 0000 0000,然而,在8位內存單元中,1是溢出去的,只有后面的8個0才是有效的表示數的位,這樣負數0和正數0都一樣了。好了,現在回到正題。

2.浮點類型(float 和 double)

有兩種,一種是單精度的即:float型的,另外一種是雙精度型的即:double型的,這與其他語言如Java和C++相同。其中:float型的占4個字節,取值范圍為:±1.5×10-28~3.4×1038其精度為7,即可表示7位數的小數,如123.3434,1.345628,1234.123。如果超過7位,則會進行四舍五入,如寫成:234.54567,實際上系統處理成234.5457,如果整數部分超過7位,則以科學計數法進行表示,而且超過部分會被四舍五入,如浮點數12345747,則輸出時為1.234575E+07。

雙精度型的浮點數在內存中占8個字節,其取值范圍為:±5.0×10-324~1.7×10308,精度為15或16,特點如單精度。

系統默認小數的類型為雙精度型的,這意味著float f1=4.4;這樣的語句將無法通過編譯,因為在這里,4.4系統默認為雙精度型的,不能將高精度的4.4賦給低精度的f1變量,解決辦法,是在數字后加上字母f或F,表示該變量為單精度型的,即上面的語句應該寫成:

float f1 = 4.4f;或者 float f1 = 4.4F;

3.小數類型(decimal)

在內存中占16個字節,一般用于對于精度有較高要求的場合,如表示原子的半徑等,其數值范圍為:±1.0×10-28~7.9×1028,可達29位小數。由于,系統默認小數為double型的,在給decimal賦值時,在數字后面要加m或M。如:

decimal dc = 23.567m;或者 decimal dc = 23.567M;

否則將給出編譯錯誤:不能隱式地將 Double 類型轉換為“decimal”類型;請使用“M”后綴創建此類型。

4.布爾類型(bool)

布爾類型是以英國著名數學家布爾的名字進行命名的,其值僅有兩種:true和false。一般用于邏輯判斷和條件表達式中,以后我們要介紹的選擇結構、循環結構和邏輯操作符,將會更多地了解這種數據類型。

5.字符類型

字符類型與C++中的字符類型略微有點不同,那就是在C++中字符類型占1個字節,以ASCII碼進行存儲,而在C#中,占2個字節,是以Unicode碼進行存儲的。這是什么意思呢?ASCII碼是美國國家信息標準交換碼,它把26個大小寫字母和10個數字、標點符號,以及其它常用的符號各以一個字節存儲,至多可以表示存儲256個字符。但是,隨著計算機在其它國家的推廣運用,這種ASCII編碼卻出現了問題:即不夠用了,因為1個字節8位,至多表示256種情況,而就我們中國而言,文字成千上萬,怎么來表示呢,還有韓文,日文,俄文等,于是人們用2個字節來表示這些信息。造成各國編碼不一致的情形,后來有人就把他統一起來,不管是哪個國家的編碼統一使用2個字節,這就是Unified Code(統一碼),即Unicode。照這樣講,一些字符和數字之間是可以進行轉換的,的確如此,如下:

int  iA = 'A'+23;

這里的iA應該是多少呢?告訴你,應該是88,怎么來的呢,因為字符’A’,在內存中以其Unicode碼65進行存儲,這樣的話,字符型可以自動向整型int進行轉換,所以結果為88。

另外,對于字符類型,是以單引號引起來的,千萬不要用成雙引號。這是兩個不同的概念。如果用成雙引號就成字符串了。

對于結構體和枚舉類型將單獨列出,敬請關注。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蜜桃传媒视频麻豆第一区免费观看 | 欧美三级欧美成人高清www | 九九热免费视频在线观看 | 性大片免费看 | japanese末成年free | 黄色av片在线观看 | 草久免费 | 国产成年人在线观看 | 日韩黄色影视 | 水卜樱一区二区av | 毛片福利 | 国产美女做爰免费视 | 草草免费视频 | 国产在线观看91精品 | 色妹子久久 | 91热久久免费频精品黑人99 | 又黄又爽又色无遮挡免费 | 激情大乳女做爰办公室韩国 | 夜间福利视频 | wwwxxx视频 | 亚洲国产精品高潮呻吟久久 | 91精品福利视频 | 羞羞电影在线观看 | 成人做爰高潮片免费视频韩国 | 色妇视频| 日韩黄色免费电影 | 久国产 | av资源在线天堂 | 成人三级电影在线 | 欧美一区在线观看视频 | 欧美一级片免费在线观看 | 午夜色视频在线观看 | 色婷婷tv | 精品国产一二区 | 亚洲日本高清 | 欧美性受ⅹ╳╳╳黑人a性爽 | 欧美一级片一区 | 草久网| 羞羞羞羞视频 | 久久精品中文字幕一区二区三区 | 羞羞视频一区二区 |