golang變量uint、int大小溢出后的結(jié)果方式
更新時(shí)間:2024年12月20日 09:46:39 作者:牛寶貝兒哦
在Go語言中,變量的大小溢出后,`uint`類型會(huì)回繞到最小值,而`int`類型會(huì)回繞到最大值的相反數(shù),例如,`uint8`溢出后會(huì)變成0,`int64`溢出后會(huì)變成最小的負(fù)數(shù)
golang變量uint、int大小溢出后的結(jié)果
golang中變量的大小溢出會(huì)是什么結(jié)果呢?
// uint8的取值范圍: 0 - 255 var a uint8 = 1 var b uint8 = 255 fmt.Println("減法:", a-b)
這段代碼的結(jié)果是什么呢?
很明顯uint8的取值范圍是0-255之間,此時(shí)已經(jīng)超出范圍了,那么超出后的結(jié)果是什么呢?
0或者0報(bào)錯(cuò)?
我也不知道,一起來看看最后的結(jié)果是怎樣?
package main import "fmt" //兩個(gè)uint類型的數(shù)字相減后小于0 func main() { var a uint8 = 1 var b uint8 = 255 fmt.Println("減法:", a-b) fmt.Println("加法:", a+b) fmt.Println("乘法:", a*b) // 結(jié)果為: // 減法: 2 // 加法: 0 // 乘法: 255 }
其它類型和此情況類似
例如int64:
package main import "fmt" // int64 Range: -9223372036854775808 through 9223372036854775807. func main() { var a int64 = -8223372036854775807 var b int64 = 9223372036854775807 fmt.Println("減法:", a-b) fmt.Println("乘法:", a*b) // 結(jié)果為: // 減法: 1000000000000000002 // 乘法: -1000000000000000001 }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Go語言實(shí)現(xiàn)基于websocket瀏覽器通知功能
這篇文章主要介紹了Go語言實(shí)現(xiàn)基于websocket瀏覽器通知功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07一文詳細(xì)談?wù)凣oLang的panic和error
說是初識(shí),并不是說第一次使用error和panic包,而是第一次特地去了解golang中的這兩個(gè)機(jī)制,下面這篇文章主要給大家介紹了關(guān)于如何通過一文詳細(xì)談?wù)凣oLang中panic和error的相關(guān)資料,需要的朋友可以參考下2022-12-12Go操作各大消息隊(duì)列教程(RabbitMQ、Kafka)
消息隊(duì)列是一種異步的服務(wù)間通信方式,適用于無服務(wù)器和微服務(wù)架構(gòu),本文主要介紹了Go操作各大消息隊(duì)列教程(RabbitMQ、Kafka),需要的朋友可以了解一下2024-02-02