二元运算符“/”不能应用于两个 'UInt32' 操作数

Binary operator '/' cannot be applied to two 'UInt32' operands

这是我的代码。

var frameCount = INT_MAX
...

let totalSize: UInt32 = 4096
let itemSize: UInt32 = 64
frameCount = totalSize / itemSize

我收到 "Binary operator '/' cannot be applied to two 'UInt32' operands" 错误消息。 是真的不可能还是我错过了什么?

错误消息有点误导。 INT_MAX 定义为

public var INT_MAX: Int32 { get }

所以

var frameCount = INT_MAX

frameCount 定义为 Int32 类型的变量。 除法 totalSize / itemSize 的结果是 UInt32 但是,并且 Swift 不会隐式转换类型。

您可以通过将初始定义更改为

来解决这个问题
var frameCount = UINT32_MAX

或者更简单,让编译器推断类型:

let totalSize: UInt32 = 4096
let itemSize: UInt32 = 64
let frameCount = totalSize / itemSize

如果您需要结果作为有符号整数,那么您必须 明确地转换它,例如

let frameCount = Int32(totalSize / itemSize)