我正在尝试使用整数移位操作的结果来初始化Float或Double。传递的参数是整数文字,移位了无符号字节。据我了解Swift的类型推断,该参数应为Int类型。但是,结果浮点值为0.0。奇怪的是,只要将参数表达式放在方括号中,问题就会消失。
let someByte = UInt8(16)
print(Double(1 << someByte)) //Prints "0.0" ?!
print(Double((1 << someByte))) //Prints "65536.0"
答案 0 :(得分:2)
这看起来像是编译器中的错误。正如@Hamish所说,最新的大师解决了这个问题,我可以确认已经安装了Swift 4.2和Swift 5.0的工具链:
0.0
,第二个打印输出65536.0
65536.0