5

使用 Swift,无论是在终端还是在操场上,当我在新行上输入以下内容时:

UInt64.max

我得到的结果值为-1。

这是一个错误吗?


编辑:示例

$ xcrun swift
Welcome to Swift!  Type :help for assistance.
  1> UInt64.max / 2
$R1: UInt64 = 9223372036854775807
  2> UInt64.max / 2 + 1
$R2: UInt64 = -9223372036854775808
  3> UInt64.max
$R3: UInt64 = -1
  4> println(UInt64.max / 2)
9223372036854775807
  5> println(UInt64.max / 2 + 1)
9223372036854775808
  6> println(UInt64.max)
18446744073709551615
4

4 回答 4

6

我认为这是终端和游乐场的错误。

但是,println 的输出在终端和操场上都是正确的(18446744073709551615)。

于 2014-06-14T10:31:49.667 回答
0

看起来与我在使用任何无符号类型时遇到的相同错误。

回声“UInt8(255)”| xcrun 斯威夫特

还将打印 -1

于 2014-06-21T16:35:11.510 回答
-1

即使使用 Swift 2.2 中的 REPL,这仍然是一个错误。请参阅https://bugs.swift.org/browse/SR-1007https://bugs.swift.org/browse/SR-1138

不过,在 XCode 7.3 的 Playgrounds 中已修复。

于 2016-04-04T04:16:18.713 回答
-2

这是因为你的处理器是 64 位的,而 UInt 是 64 位 * 2。 Int 类型无法运行这个数字,它超出了范围。

于 2015-08-31T07:15:27.147 回答