
var x uint64 = 257
var y int = 257
fmt.Println("rv is ", rv)
fmt.Println("rv2 is ", byte(x))
fmt.Println("rv3 is ", byte(y))
fmt.Println("rv3 is ", byte(int(257))) # constant 257 overflows byte 这里报错了
1 zdt3476 Sep 29, 2017 所以,想问啥? |
2 mason961125 Sep 29, 2017 你把 int 转换成 byte 肯定溢出阿...int 占用空间比 byte 大多了 |
3 C0reFast Sep 29, 2017 这个应该是编译期检查,257 是超出 byte 类型表达能力的,直接用 byte(257)和 var z byte = 257 是一样的。其他两个都是运行时了。 |
4 bin381 OP fmt.Println("rv3 is ", byte(y)) 这里是没有报错的 fmt.Println("rv3 is ", byte(int(257))) 这个是报错了 |
5 bin381 OP |
6 6ufq0VLZn0DDkL80 Sep 29, 2017 |
7 iceheart Oct 10, 2017 via Android 257 是立即数,byte 装不下,编译器不知道咋处理,当然报错啦。 用变量转 byte,溢出了是另一回事,编译器不关心这个,所以编译过啦 |