溢出运算符

Swift不允许整型变量或者常量被赋值一个超出其表数范围的数值,如果试图这么干,则会出现运行时错误:

屏幕快照 2016-07-25 上午11.37.24.png

如果希望数据溢出时Swift程序只是对一出的数据位进行截断而不是导致错误,则可以使用以&开头的溢出运算符:
溢出加法 &+
溢出减法 &-
溢出乘法 &*
溢出除法 &/
溢出求余 &%

值的上溢
下面例子使用了溢出加法&+来处理无符号整数的上溢出:

屏幕快照 2016-07-25 上午11.38.24.png

max用Int8所能承载的最大值255(二进制11111111),然后用&+加1。然后UInt8就无法表达这个新值的二进制了,也就导致了这个新值上溢出了,大家可以看下图。溢出后,新值在UInt8的承载范围内的那部分是00000000,也就是0。

屏幕快照 2016-07-25 上午11.39.10.png

值的下溢
数值也有可能因为太小而越界:

屏幕快照 2016-07-25 上午11.39.46.png

UInt8的最小值是0(二进制为00000000)。使用&-进行溢出减1,就会得到二进制的11111111即十进制的255。

屏幕快照 2016-07-25 上午11.40.12.png

除零溢出
整数和整数在进行除法或者求余运算时,如果被除数为0,程序将会出错:

屏幕快照 2016-07-25 上午11.40.49.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容