二元运算符“/”不能应用于两个 '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)
这是我的代码。
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)