我不确定当前的情况如何,但是目前情况是FP异常检测支持与整数非常不同。整数除法陷阱很常见。 如果POSIXSIGFPE完全引发异常,则要求它引发。

但是,您可以找出它是哪种SIGFPE,以查看它实际上是除法异常。(不过,不一定要被零除:2的补码INT_MIN/ -1除陷阱,以及x64的x86 div以及idiv在64b / 32b除的商不适合32b输出寄存器时也陷阱。但是在使用的AArch64sdiv上不是这种情况。)

所述的glibc手册说明那BSD和GNU系统用于信号处理程序提供一个额外的精氨酸SIGFPE,这将是FPE_INTDIV_TRAP对被零除。POSIX文件FPE_INTDIV_TRAP作为一个可能的值siginfo_t的int si_code字段,在哪里系统siginfo_t包括构件。

如果Windows首先提供了一个不同的异常,或者将它像Unix一样捆绑了相同算术异常的不同样式,则为IDK。如果是这样,则默认处理程序将解码额外的信息,以告诉您它是哪种异常。

POSIX和Windows都使用短语“被零除”来覆盖所有整数除法异常,因此显然这是常见的缩写。对于确实了解INT_MIN / -1(带2的补码)的问题的人,短语“被零除”可以视为除法异常的同义词。该短语立即指出了不知道为什么整数除法可能会成为问题的人们的常见情况。

FP异常语义

对于大多数操作系统/ C ABI中的用户空间进程,默认情况下会屏蔽FP异常。

这是有道理的,因为IEEE浮点可以表示无穷大,并且具有NaN可以使用该值将误差传播到所有将来的计算中。

0.0/0.0 => NaN

如果x是有限的: x/0.0=> +/-Inf带有x的符号

当掩盖异常时,这甚至可以使诸如此类的事情产生明智的结果:

double x = 0.0;

double y = 1.0/x;   // y = +Inf

double z = 1.0/y;   // z = 1/Inf = 0.0, no FP exception

FP与整数错误检测

FP检测错误的方法非常好:当掩盖异常时,它们会在FP状态寄存器中设置一个标志,而不是进行捕获。(例如,x86的MXCSR用于SSE指令)。该标志将保持设置状态,直到手动清除为止,因此您可以检查一次(例如在循环之后),以查看发生了哪些异常,而不是发生异常的位置。

已经提出了具有相似的“粘性”整数溢出标志来记录在一系列计算期间的任何时间是否发生溢出的提议。允许屏蔽整数除法异常在某些情况下会很好,但在其他情况下则很危险(例如,在地址计算中,您应陷阱而不是潜在地存储到虚假位置)。

但是,在x86上,要检测在一系列计算期间是否发生整数溢出,需要在每个计算之后放置一个条件分支,因为标志只是被覆盖了。MIPS的一条add指令将捕获有符号的溢出,而一条无符号的指令则永不捕获。因此,整数异常检测和处理的标准化程度要差很多。

整数除法不能选择生成NaN或Inf结果,因此以这种方式工作很有意义。

由整数除法产生的任何整数位模式都是错误的,因为它将表示特定的有限值。

但是,在x86上,如果掩盖了“无效的浮点”异常,则使用cvtsd2si或类似的转换指令将超出范围的浮点值转换为整数会生成“整数不确定”值。除符号位外,该值全为零。即INT_MIN。

在c语言中整数除以0,整数除零在哪些平台上触发浮点异常?相关推荐

  1. linux 除0异常,关于c ++:整数除以零的平台会触发浮点异常?

    在另一个问题中,有人想知道他们为什么会得到一个"浮点错误",实际上他们的C ++程序中有一个整数除零.围绕这一点进行了讨论,有些人声称浮点异常实际上从未因浮点除以零而增加,而只是在 ...

  2. java int除以int_转:int整数除以int整数一定得到的是int整数(易忽视)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014053368/article/d ...

  3. C语言中的空字符'\0'

    C语言中的空字符'\0' 本博客整理自: http://blog.csdn.net/suluner/article/details/54408638 https://zhidao.baidu.com/ ...

  4. C语言中到底是非0表示真,还是1表示真?

    我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重点说一说C语言中到底是非0表示真,还是1表示真?这就是说到C语言中的两个常见运算形式,即关系运算符和逻辑运算符. 为照顾急性子的同学,先直接 ...

  5. C语言中的结束符‘\0‘

    C语言中的结束符'\0' '\0'是C语言中的字符串结束标志.它的十进制输出:0,字符型输出:空字符(什么都没有,空空如也). (C语言中字符串是用英文输入法的双引号括起来,而字符是用英文输入法的单引 ...

  6. 即时通讯音视频开发(0):零基础,史上最通俗视频编码技术入门

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...

  7. c 语言中整除的意义,整数和整除意义.doc

    整数和整除意义 1.1 整数和整除的意义 教学目标 1.在"分类--归纳"的过程中,理解自然数与整数的意义. 2.在"实验--猜想--归纳"的过程中,理解和掌握 ...

  8. 在python语言中下列是二进制整数_Python从菜鸟到高手(5):数字

    Python从菜鸟到高手(5):数字 发布时间:2020-07-12 02:17:50 来源:51CTO 阅读:1005 作者:androidguy 1 基础知识 Python语言与其他编程语言一样, ...

  9. c 语言中整除的意义,整数和整除的意义

    <整数和整除的意义>由会员分享,可在线阅读,更多相关<整数和整除的意义(3页珍藏版)>请在人人文库网上搜索. 1.1.1 整数和整除的意义教学目标:1. 理解整除和自然数的意义 ...

最新文章

  1. 加/减数组中的值得到指定的和 Target Sum
  2. 后台开发经典书籍--代码整洁之道
  3. python long_python long函数是什么?如何使用?
  4. yii2 mysql between_yii2:多条件多where条件下碰到between时,between语句如何处理呢?
  5. 计算机毕设最快多长时间,大学几年快结束了,计算机毕设到底该怎么做?
  6. PAT乙级(1018 锤子剪刀布)
  7. 会议录音被误删了用EasyRecovery怎么恢复
  8. 工字型钢弹性截面模量计算公式_截面抗弯模量的公式
  9. 在Ubuntu22.04中安装微信、QQ
  10. 黑客工具之NBSI介绍
  11. 中国制造2025关于智能驾驶汽车的相应介绍
  12. Windows搭建Nginx直播推流服务器
  13. oracle 安装之后
  14. 飞利浦 V808 android
  15. 一点体会:找工作这事儿
  16. GPL对应的Bioconductor注释包(最全)
  17. 2020年黑马python视频教程5.0新版课程_黑马Python就业班5.0-最新2020人工智能
  18. 「你是砍柴的,人家是放羊的,你们聊一天,人家羊吃饱了,你的柴怎么办?」这段话可以解读成哪些含义?
  19. java实现汽车租赁项目
  20. React 屏幕截图生成器 html2canvas

热门文章

  1. 解决Qt5.7.0 cannot find -lGL
  2. android进程通信6,[Android]你不知道的Android进程化(6)--进程通信Andromeda框架
  3. Lipschitz常数、Lipschitz条件
  4. 【C++】C++PrimerPlus(第6版)中文版 第9章 内存模型和名称空间 编程练习 参考答案
  5. python turtle笛卡尔心形线_用MATLAB实现心形线
  6. U盘重装centos7系统(开发者模式)
  7. 数学建模-数学规划模型
  8. Spark简介、生态系统
  9. Maximo 密码加密传送
  10. Excel VBA 编程的常用代码