Why is UInt64 max equal -1 in Swift?

Using Swift, wether in terminal or playground, when I enter the following on a new line:

UInt64.max

I get a result value of -1.

  • How do I change the UIPageViewController from WITHIN one of the UIViewControllers that is part of the UIPageViewController?
  • Crashes with Firestore
  • Open File Dialog crashes in Swift
  • Waiting for Alamofire in Unit Tests
  • realm cocoa: is it possible to do queries on links
  • updating an SKLabel to show the right integer
  • Is this a bug?


    Edit: Examples

    $ 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 Solutions Collect From Internet About “Why is UInt64 max equal -1 in Swift?”

    I think it is a bug of terminal and playground.

    But, the output of the println is correct(18446744073709551615) in both terminal and playground.

    Looks like the same bug I’ve run into with any unsigned type.

    echo “UInt8(255)” | xcrun swift

    will also print -1

    It’s because your processor is of 64 bit and UInt is 64 bit * 2.
    The type Int can’t run this number, it’s out of range.

    This is still a bug, even with the REPL in Swift 2.2. See https://bugs.swift.org/browse/SR-1007 or https://bugs.swift.org/browse/SR-1138.

    Fixed in Playgrounds with XCode 7.3 though.