9
通常已知值是正值。例如,TCP/UDP序列號總是正值。 int
和unsigned int
都足以存儲最大的sequence number
,所以我可以使用這些類型中的任何一種。還有很多其他的例子,值已知是積極的。每次我知道我正在處理無符號值時,我應該使用「無符號」嗎?
是否有任何理由使用unsigned
類型時,常規signed
類型的容量是否足夠(通常綽綽有餘)?
我個人傾向於使用常規的類型,因爲:
int
可能是一個有點更具可讀性比uint
或unsigned int
- 我並不需要包括額外的頭爲
UINT
等 - 我將避免在程序中的其他地方進一步投入
使用原因unsigned
類型我可以想象:
- 幫助編譯器生成更好的代碼?
- 幫助其他程序員理解變量是無符號
- 避免可能出現的錯誤(例如,當INT被分配到UINT編譯器可能會產生編譯時錯誤,我們應該檢查我們分配一個值不爲負)
有關此處的一些想法:http://embeddedgurus.com/stack-overflow/2009/08/a-tutorial-on- signed-and-unsigned-integers/ – Morwenn 2013-04-24 09:36:57
謝謝,我剛纔發現這個問題http://stackoverflow.com/questions/12225521/should-unsigned-ints-be-used-if-not-necessary?rq= 1 – javapowered 2013-04-24 09:38:02
沒有。有一些反對使用'unsigned'的爭論 - Stroustrup在某處傳遞了C++編程語言 - 拉科斯在他的一本書中寫了一篇關於它的章節:單調乏味。示例問題:如果你有值a和b,'abs(a - b)'傾向於直觀地用於整數,但不是無符號的;值得注意的是標準轉換可以默默啓動,所以您可能希望從無符號使用中獲得的支票無論如何都不起作用 - 負值變得無聲無息,反之亦然。 – 2013-04-24 09:39:16