![](/img/trans.png)
[英]How to set value of (initialize) unichar/UInt16 in hexadecimal in Swift
[英]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.