易學筆記-Go語言-第4章:基本結構和基本資料型別/4.5 基本型別/4.5.2 整形
阿新 • • 發佈:2018-11-22
- 整形
- 固定位元組數整形:與作業系統無關
- int 和 uint 在 32 位作業系統上,它們均使用 32 位(4 個位元組),在 64 位作業系統上,它們均使用 64 位(8 個位元組)。
- uintptr 存放指標
- 指定位元組數整形
- int8:用8個位表示,負數最高位為1,正數最高位0,所以最小負數是2的8次方,也就是-128,最大正數是2的0次方、2的0次方。。。2的6次方之和,結果是127
- int16:用16個位表示,負數最高位為1,正數最高位0,同理可算範圍是:-32768 -> 3276
- int32:用32個位表示,負數最高位為1,正數最高位0,同理可算範圍是:-2,147,483,648 -> 2,147,483,647
- int64:用64個位表示,負數最高位為1,正數最高位0,同理可算範圍是:-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807
- 無符號指定位元組數整形
- uint8:最高1也表示是正數,所以最大值是2的8次方減去1,結果是255
- uint16:最高1也表示是正數,所以最大值是2的16次方減去1,結果是65535
- uint32:最高1也表示是正數,所以最大值是2的32次方減去1,結果是4294967295
- uint64:最高1也表示是正數,所以最大值是2的64次方減去1,結果是18446744073
- 整型運算
- 不同的整型型別不能運算
- 程式碼:
var i1 int32 = 100
var i2 int64 = 200
//int32和int64不同型別
fmt.Printf("i1+i2=%d\n", i1+i2) - 結果輸出:
.\main.go:31:29: invalid operation: i1 + i2 (mismatched types int32 and int64) 編譯報錯說是不同型別
- 程式碼:
- 強制轉換方可運算
- 程式碼:
var i1 int32 = 100
var i2 int64 = 200
//int32和int64不同型別
fmt.Printf("i1+i2=%d\n", int64(i1)+i2) - 結果輸出:
i1+i2=300
- 程式碼:
- 不同的整型型別不能運算