2009-08-28 44 views
4

我剛剛開始閱讀C#語言,並且閱讀材料中的第一部分自然就是變量和類型。C#整數類型不一致

在短期內我遇到了整型表,其中列出sbytebyteshortushortintuintlongulongchar。 這裏的配對例外是char,所以讓我們無視它,並看看其他人。

第一對,byte,爲帶符號的版本前綴加上「s」,並且保留沒有前綴的未簽名版本。但對於所有其他對,關係是相反的...簽名版本不帶前綴,而無符號帶有「u」前綴。

是否有這樣的理由,我應該知道,或者這只是一個設計怪癖?

鏈接以供參考:http://msdn.microsoft.com/en-us/library/exx3b86w.aspx

+2

在框架的最初設計期間,這個問題在二十世紀九十年代末得到了激烈的爭議。 – 2009-08-28 15:20:19

回答

13

字節常規視爲位而不是一個正常數量的圖案,和用於一個字節的「標準」的值是0到255字節的簽名版本是異常的情況下,與如-128到處理過的值127.

對於所有其他數字類型的「標準」值簽署,因爲這吻合我們關於數字的一天到一天的直覺(即,它們可以爲負,以及正)。對於數字類型,未簽名的版本是異常情況。

(我不認爲我已經曾經任何真實世界的代碼中使用sbyte,我用intlong等更往往比我用自己的無符號對應。)僅供參考,本

+0

聽起來合乎邏輯我想。 :) 謝謝! – grimman 2009-08-28 12:40:46

4

我猜byte可能是更爲常見的被用來作爲無符號類型而不是符號類型一個