如何在Swift中找到Int的最大值

48

我想了解如何访问“struct”类型的Int。当我cmd-clicked Int时,它带我到这个类,我想找出它可以容纳的最大值是多少。是否有一种方法可以从这些属性中获取?这个结构体中的最大值和最小值是什么?

struct Int : SignedInteger {
    var value: Builtin.Word
    init()
    init(_ v: Builtin.Word)
    init(_ value: Int)
    static func convertFromIntegerLiteral(value: Int) -> Int
    typealias ArrayBoundType = Int
    func getArrayBoundValue() -> Int
    static var max: Int { get }
    static var min: Int { get }
}

3
普通的 Int 的最大值是 Int.max - Fattie
4个回答

77
“您可以使用min和max属性访问每种整数类型的最小值和最大值:”
let minValue = UInt8.min  // minValue is equal to 0, and is of type UInt8
let maxValue = UInt8.max  // maxValue is equal to 255, and is of type UInt8

这些属性的值是适当大小的数字类型(例如上面的UInt8),因此可以与相同类型的其他值一起在表达式中使用。

谢谢,我明白了。这里有一个问题,为什么它总是要和类名一起使用?不能像这样使用实例,比如 "let intTemp: Int = 56;",我不能访问 intTemp.min 或 intTemp.max 吗?为什么不允许我这样做呢? - thndrkiss
2
@thndrkiss - 对于我们所有人来说,这是一种非常新的语言,所以老实说,我不知道为什么我们不能使用实例(例如 intTemp.max)。但在这里,我们只接受它作为 Swift 语言 的设计/语法。 - iPatel
@thndrkiss 我还没有下载新的 SDK,但似乎 minmax 可以是静态属性。 - Inder Kumar Rathore

29

在Swift 3中尝试以下代码:

let value = Int.max

7
你可以通过min和max属性访问每个整数类型的最小值和最大值:
let minValue = UInt8.min  // minValue is equal to 0, and is of type UInt8
let maxValue = UInt8.max  // maxValue is equal to 255, and is of type UInt8

这些属性的值属于适当大小的数字类型(例如上面的示例中的UInt8),因此可以与同一类型的其他值一起在表达式中使用。
来源:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html

3
你可以像其他答案建议的那样访问这些静态属性。
我看到一些评论中,人们想知道为什么不能将它们作为实例变量进行访问。
这就像是在询问“5的最大值是多少?”并期望得到一个有意义的答案。
其中一个主要用途是防止整数溢出。
类似于“如果我将某些内容添加到此整数中,使其变得大于Int.max即触发溢出”,然后做出相应的行动。
更多关于苹果如何解决整数溢出问题的信息,请参见 在这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接