gpt4 book ai didi

swift - Swift 的 Double 初始值设定项用于移位整数参数的类型推断问题

转载 作者:可可西里 更新时间:2023-11-01 01:07:35 26 4
gpt4 key购买 nike

我正在尝试使用整数位移操作的结果来初始化 Float 或 Double。传递的参数是一个整数文字,由一个无符号字节移位。据我了解 Swift 的类型推断,该参数应该是 Int 类型。但是,生成的浮点值是 0.0。奇怪的是,只要我将参数表达式放在括号中,问题就消失了。

let someByte = UInt8(16)

print(Double(1 << someByte)) //Prints "0.0" ?!
print(Double((1 << someByte))) //Prints "65536.0"

最佳答案

这看起来像是编译器中的错误。正如@Hamish 所说,最新的大师解决了这个问题,我可以确认,因为我安装了 Swift 4.2 和 Swift 5.0 的工具链:

  • 使用 Swift 4.2 工具链,行为如您所述:第一个打印输出 0.0,第二个打印输出 65536.0
  • 如果使用最新的 Swift 5.0 工具链,则两个调用都会打印 65536.0

关于swift - Swift 的 Double 初始值设定项用于移位整数参数的类型推断问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54349792/

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