尝试分配64位整数时,Swift 3 uint64溢出

时间:2016-11-15 20:07:10

标签: swift xcode chess integer-overflow bitboard

我正在尝试在Swift中实现位板,并尝试将64位整数存储到UInt64中并获得溢出错误。

var white_queen_bb:uint64 = 0001000000000000000000000000000000000000000000000000000000000000 as UInt64;

Integer Literal '100000000000000000000000000000000000000000000000000000000000' overflows when stored into 'UInt64'

我猜测会发生什么是Swift将数字视为十进制整数,然后尝试将其转换为二进制数,最终大于64位。

有人可以解释我将如何做到这一点。 谢谢

1 个答案:

答案 0 :(得分:2)

你是对的。默认情况下,Swift将数字视为十进制数。 因此let i: UInt64 = 0100的小数值为100.

如果要在Swift中使用二进制数,请使用0b前缀: let j: UInt64 = 0b0100的小数值为4.