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

署名されていない型で遭遇したのと同じバグのように見えます。

echo "UInt8(255)" | xcrun スイフト

-1も出力します

于 2014-06-21T16:35:11.510 に答える
-1

Swift 2.2 の REPL を使用しても、これはまだバグです。https://bugs.swift.org/browse/SR-1007またはhttps://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 に答える