如何计算 swift 中 UInt16 值数组的总和?

How to calculate the sum of array of UInt16 values in swift?

如何在 swift5 中计算 UInt16 值数组的总和。 下面我分享我的代码,

let myArray: [UInt16] = [23200, 23200, 23300, 23300, 23200, 23300, 23200]
let sumOfArray = myArray.reduce(0, { [=11=] + [=11=] })
print("sum of myArray is  \(sumOfArray)")

当我计算数组值的总和时,出现如下错误 "Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)."

请帮帮我

UInt16 是 16 位,因此它可以容纳的最大无符号整数值为 65535。这小于你的结果总和 162700。

使用

let myArray: [UInt16] = [23200, 23200, 23300, 23300, 23200, 23300, 23200]
let sumOfArray = myArray.reduce(0, { (UInt32([=10=]) + UInt32()) })
print("sum of myArray is  \(sumOfArray)")

甚至更强大

let sumOfArray = myArray.reduce(0, { [=11=] + UInt()) })

顺便说一句,我认为您打错了字,在您的 reduce 中,您的意思是 [=14=] +

添加到@Kamil 的回答,

如果只需要使用return UInt16,可以使用溢出运算符:

let myArray: [UInt16] = [23200, 23200, 23300, 23300, 23200, 23300, 23200]
let sumOfArray = myArray.reduce(0, {[=10=] &+  })
print("sum of myArray is  \(sumOfArray)")