go规范说:
<< left shift integer << unsigned integer
如果左侧的类型为 uint8:
var x uint8 = 128
fmt.Println(x << 8) // it got 0, why ?
fmt.Println(int(x)<<8) // it got 32768, sure
问题:
当 x 是 uint8 类型时,为什么没有编译错误?
为什么x << 8得到结果0
对于 C/C++,
unsigned int a = 128;
printf("%d",a << 8); // result is 32768.
谁能解释一下?谢谢你。
慕斯王
相关分类