美文网首页
溢出运算符

溢出运算符

作者: anyurchao | 来源:发表于2016-07-25 11:41 被阅读170次

    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

    相关文章

      网友评论

          本文标题:溢出运算符

          本文链接:https://www.haomeiwen.com/subject/bimgjttx.html