gpt4 book ai didi

go - 1 << 64 - 1 是如何工作的?

转载 作者:IT老高 更新时间:2023-10-28 13:05:13 25 4
gpt4 key购买 nike

http://tour.golang.org/#14他们展示了一个例子,其中数字 1 移动了 64 位。这当然会导致溢出,但随后将其减去 1,一切正常。为什么一半的表达式会导致失败,而整个表达式则可以正常工作?

想法:
我会假设无符号的设置大于它允许的数字是导致爆炸的原因。似乎在表达式的右侧比在左侧分配的内存更松散?这是真的吗?

最佳答案

表达式的结果是一个(编译时)常量,因此在编译期间会计算表达式。语言规范要求

Constant expressions are always evaluated exactly; intermediate values and the constants themselves may require precision significantly larger than supported by any predeclared type in the language. The following are legal declarations:

const Huge = 1 << 100         // Huge == 1267650600228229401496703205376  (untyped integer constant)
const Four int8 = Huge >> 98 // Four == 4 (type int8)

https://golang.org/ref/spec#Constant_expressions

关于go - 1 << 64 - 1 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26833421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com