繁体   English   中英

如何快速计算 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, { $0 + $0 })
print("sum of myArray is  \(sumOfArray)")

当我计算数组值的总和时,它给出一个错误“执行被中断,原因:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)”。

请帮我。

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

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

甚至更健壮

let sumOfArray = myArray.reduce(0, { $0 + UInt($1)) })

顺便说一句,我相信你有一个错字,在你的reduce你的意思是$0 + $1

添加到@Kamil的回答中,

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM