Swift溢出运算符
默认情况下,当你往一个整型常量或变量赋于一个它不能承载的大数时,Swift不会让你这么干的,它会报错。这样,在操作过大或过小的数的时候就很安全了。 例如, var potentialOverflow = Int16.max // potentialOverflow 等于 32767,这是 Int16 能承载的最大整数 potentialOverflow += 1 // 噢,出错了 对过大或过小的数值进行错误处理让你的数值边界条件更灵活。 当然,你有意在溢出时对有效位进行截断,你可采用溢出运算,而非错误处理。Swfit为整型计算提供了5个
值的上溢出下面例子使用了溢出加法 var willOverflow = UInt8.max // willOverflow 等于UInt8的最大整数 255 willOverflow = willOverflow &+ 1 // 这时候 willOverflow 等于 0
值的下溢出数值也有可能因为太小而越界。举个例子:
Swift代码是这样的: var willUnderflow = UInt8.min // willUnderflow 等于UInt8的最小值0 willUnderflow = willUnderflow &- 1 // 此时 willUnderflow 等于 255 有符整型也有类似的下溢出,有符整型所有的减法也都是对包括在符号位在内的二进制数进行二进制减法的,这在 "按位左移/右移运算符" 一节提到过。最小的有符整数是 来看看Swift代码: var signedUnderflow = Int8.min // signedUnderflow 等于最小的有符整数 -128 signedUnderflow = signedUnderflow &- 1 // 如今 signedUnderflow 等于 127 除零溢出一个数除于0 let x = 1 let y = x / 0 使用它们对应的可溢出的版本的运算符 let x = 1 let y = x &/ 0 // y 等于 0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |