美文网首页C++ 杂记
007 溢出和其他算术异常

007 溢出和其他算术异常

作者: 赵者也 | 来源:发表于2020-01-12 19:50 被阅读0次

算术表达式有可能产生未定义的结果。一部分原因是数学性质本身:例如除数是 0 的情况;另外一部分则源于计算机的特点:例如溢出,当计算的结果超出该类型所能表示的范围时就会产生溢出。

假设某个机器的 short 类型占 16 位,则最大的 short 数值是 32767。在这样一台机器上,下面的复合赋值语句将产生溢出:

short short_value = 32767;
short_value += 1;
qDebug() << "short_value: " << short_value;

给 short_value 赋值的语句是未定义的,这是因为表示一个带符号数 32768 需要 17 位,但是 short 类型只有 16 位。很多系统在编译和运行时都不报溢出错误,像其他未定义的行为一样,溢出的结果是不可预知的。在我们的系统中,程序的输出结果是:

short_value:  -32768

该值发生了“环绕(wrapped around)”,符号为本来是 0,由于溢出被改成了 1,于是结果变成一个负值。在别的系统中也许会有其他结果,程序的行为可能不同甚至直接崩溃。

相关文章

  • 007 溢出和其他算术异常

    算术表达式有可能产生未定义的结果。一部分原因是数学性质本身:例如除数是 0 的情况;另外一部分则源于计算机的特点:...

  • Java常见异常

    //算术异常 ArithmeticExecption //空指针异常类 NullPointerException ...

  • 【JVM】内存溢出分析

    一 内存溢出概述 都有发生内存溢出异常(OutOfMemoryError,简称OOM)的可能。 内存溢出和内存泄漏...

  • 列出一些你常见的运行时异常?

    ArithmeticException(算术异常) ClassCastException (类转换异常) Ille...

  • java中常见的异常类型

    ①算术异常类:ArithmeticException②空指针异常类:NullPointException③类型强制...

  • Java常见异常总结

    算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强...

  • Java异常简述

    算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转...

  • Swift基础13

    高级运算符 与c语言中的算术运算符不同,Swift中的算术运算符默认是不会溢出的。所以溢出行为都会被捕获并报告为错...

  • Swift进阶(十四)高级运算符

    溢出运算符(Overflow Operator) Swift的算术运算符出现溢出时会抛出运行时错误 Swift有溢...

  • java中常见的异常及解决办法

    1 算术异常类:ArithmeticException2 空指针异常类:NullPointException3 类...

网友评论

    本文标题:007 溢出和其他算术异常

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