| 關鍵字 | .NET 型別 | 簽署 | 位元 | 範圍 |
|---|---|---|---|---|
| sbyte | System.SByte | 有號 | 8 | -128 ~ 127 |
| byte | System.Byte | 無號 | 8 | 0 ~ 255 |
| short | System.Int16 | 有號 | 16 | -32,768 ~ 32,767 |
| ushort | System.UInt16 | 無號 | 16 | 0 ~ 65,535 |
| int | System.Int32 | 有號 | 32 | -2,147,483,648 ~ 2,147,483,647 |
| uint | System.UInt32 | 無號 | 32 | 0 ~ 4,294,967,295 |
| long | System.Int64 | 有號 | 64 | -9.22×10¹⁸ ~ 9.22×10¹⁸ |
| ulong | System.UInt64 | 無號 | 64 | 0 ~ 1.84×10¹⁹ |
n 位元可表示 2ⁿ 個值。有號型別以最高位為符號位,範圍對稱;無號型別全為數值位,範圍 0 ~ 2ⁿ-1。
using System;
class Test {
static void Main() {
short x = 32766;
x++; Console.WriteLine(x); // 32767
x++; Console.WriteLine(x); // -32768(溢位環繞)
}
}
預設未檢查模式下溢位會環繞(wrap-around),不拋出例外。
checked 區塊/運算式:啟用溢位檢查,溢位拋 OverflowException。unchecked 區塊/運算式:明確關閉檢查(預設)。/checked+:全域啟用。| 情境 | 建議型別 |
|---|---|
| 一般整數運算、迴圈計數 | int |
| 位元操作、旗標、原始資料 | byte / uint / ulong |
| 大數值、時間戳、資料庫主鍵 | long |
| 互通性、二進位協定 | 對應位元寬度的有號/無號型別 |