uint和int的区别

uint和int的区别

大家好,又见面了,我是你们的朋友全栈君。

================================

go grpc-go 相关技术专栏 总入口

go语言基础知识总结、整理、收藏

================================

本次测试的环境是Mac系统下,CPU 64位。

注意:

go语言中的int的大小是和操作系统位数相关的;

如果是32位操作系统,int类型的大小就是4字节;如果是64位操作系统,int类型的大小就是8个字节

1、测试不同int类型占用字节数大小

1.1、测试有符号int类型 代码语言:javascript复制import (

"testing"

"unsafe"

"math"

"fmt"

)

func TestIntSize(t *testing.T) {

fmt.Println("不同int类型占用的字节数大小:")

var i1 int = 1

var i2 int8 = 2

var i3 int16 = 3

var i4 int32 = 4

var i5 int64 = 5

fmt.Printf("int : %v\n", unsafe.Sizeof(i1))

fmt.Printf("int8 : %v\n", unsafe.Sizeof(i2))

fmt.Printf("int16 : %v\n", unsafe.Sizeof(i3))

fmt.Printf("int32 : %v\n", unsafe.Sizeof(i4))

fmt.Printf("int64 : %v\n", unsafe.Sizeof(i5))

}测试结果:

代码语言:javascript复制int : 8

int8 : 1

int16 : 2

int32 : 4

int64 : 8

1.2、测试无符号int类型 代码语言:javascript复制func TestUIntSize(t *testing.T) {

fmt.Println("不同无符号int类型占用的字节数大小:")

var i1 uint = 1

var i2 uint8 = 2

var i3 uint16 = 3

var i4 uint32 = 4

var i5 uint64 = 5

fmt.Printf("uint : %v\n", unsafe.Sizeof(i1))

fmt.Printf("uint8 : %v\n", unsafe.Sizeof(i2))

fmt.Printf("uint16 : %v\n", unsafe.Sizeof(i3))

fmt.Printf("uint32 : %v\n", unsafe.Sizeof(i4))

fmt.Printf("uint64 : %v\n", unsafe.Sizeof(i5))

}测试结果:

代码语言:javascript复制uint : 8

uint8 : 1

uint16 : 2

uint32 : 4

uint64 : 8

2、测试不同int类型的取值范围

2.1、测试有符号int情况 代码语言:javascript复制func TestIntRange(t *testing.T) {

// 不同int类型的取值范围

fmt.Println("不同int类型的取值范围:")

//fmt.Println("int:", math.MinInt, "~", math.MaxInt) 报错,没有 math.MinInt math.MaxInt

fmt.Println("int8:", math.MinInt8, "~", math.MaxInt8)

fmt.Println("int16:", math.MinInt16, "~", math.MaxInt16)

fmt.Println("int32:", math.MinInt32, "~", math.MaxInt32)

fmt.Println("int64:", math.MinInt64, "~", math.MaxInt64)

fmt.Println()

}测试结果:

代码语言:javascript复制不同int类型的取值范围:

int8: -128 ~ 127

int16: -32768 ~ 32767

int32: -2147483648 ~ 2147483647

int64: -9223372036854775808 ~ 9223372036854775807

2.2、 测试无符号不同int类型的取值范围 代码语言:javascript复制func TestUintRange(t *testing.T) {

fmt.Println("uint8:", 0, "~", math.MaxUint8)

fmt.Println("uint16:", 0, "~", math.MaxUint16)

fmt.Println("uint32:", 0, "~", math.MaxUint32)

//fmt.Println("uint64:", 0, "~", math.MaxUint64)

fmt.Println()

}测试结果

代码语言:javascript复制=== RUN TestUintRange

uint8: 0 ~ 255

uint16: 0 ~ 65535

uint32: 0 ~ 4294967295

--- PASS: TestUintRange (0.00s)

PASS发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170552.html原文链接:https://javaforall.cn

相关文章

速腾音响的音质效果怎么样?
bet3365官方手机

速腾音响的音质效果怎么样?

🕒 10-08 👁️ 805
淘宝每天有多少单?如何提升订单量?
best365从哪能进去

淘宝每天有多少单?如何提升订单量?

🕒 09-19 👁️ 6463
烬的皮肤哪个手感最好
365bet足球网址

烬的皮肤哪个手感最好

🕒 09-21 👁️ 3564
泰然金融理财怎么样及正规金融理财排名
bet3365官方手机

泰然金融理财怎么样及正规金融理财排名

🕒 08-14 👁️ 8966
京东秒杀真的划算吗?秒杀一般能便宜多少?京东秒杀机制详解!
軒轅劍柒 (軒轅劍7) 攻略匯集 (11/10更新)
365bet足球网址

軒轅劍柒 (軒轅劍7) 攻略匯集 (11/10更新)

🕒 09-22 👁️ 2669