<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=SIGFPE</id>
	<title>SIGFPE - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=SIGFPE"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=SIGFPE&amp;action=history"/>
	<updated>2026-07-15T08:24:25Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=SIGFPE&amp;diff=608389&amp;oldid=prev</id>
		<title>imported&gt;Escarbot：​wikidata interwiki</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=SIGFPE&amp;diff=608389&amp;oldid=prev"/>
		<updated>2019-05-14T07:53:47Z</updated>

		<summary type="html">&lt;p&gt;wikidata interwiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA|G1=IT}}&lt;br /&gt;
{{Infobox Computing signal&lt;br /&gt;
| description = 错误的算术操作&lt;br /&gt;
| action      = 进程异常终止&lt;br /&gt;
| FPE_INTDIV | 整数除以零&lt;br /&gt;
| FPE_INTOVF | 整数上溢&lt;br /&gt;
| FPE_FLTDIV | 浮点除以零&lt;br /&gt;
| FPE_FLTOVF | 浮点上溢&lt;br /&gt;
| FPE_FLTUND | 浮点下溢&lt;br /&gt;
| FPE_FLTRES | 浮点结果不准&lt;br /&gt;
| FPE_FLTINV | 无效浮点操作&lt;br /&gt;
| FPE_FLTSUB | 浮点下标越界&lt;br /&gt;
}}&lt;br /&gt;
在[[POSIX]]&amp;lt;!-- Original: [[POSIX]] --&amp;gt;兼容的平台上，&amp;#039;&amp;#039;&amp;#039;SIGFPE&amp;#039;&amp;#039;&amp;#039;是当一个[[行程|进程]]&amp;lt;!-- Original: [[process (computing)|process]] --&amp;gt;执行了一个错误的算术操作时发送给它的[[信号 (计算机科学)|信号]]。SIGFPE的[[C预处理器|符号常量]]在[[头文件]]&amp;lt;!-- Original: [[header file]] --&amp;gt;&amp;lt;code&amp;gt;[[signal.h]]&amp;lt;/code&amp;gt;中定义。因为在不同平台上，信号数字可能变化，因此常使用信号名称。&amp;lt;ref&amp;gt;{{ cite web | url = http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/signum.h | title = sourceware.org Git - glibc.git/blob - bits/signum.h | accessdate = 2009-11-18 | date = 2001-07-06 }}{{dead link|date=2017年11月 |bot=InternetArchiveBot |fix-attempted=yes }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 语源 ==&lt;br /&gt;
&amp;#039;&amp;#039;SIG&amp;#039;&amp;#039;是信号名的通用[[詞綴|前缀]]&amp;lt;!-- Original: [[Prefix (linguistics)|prefix]] --&amp;gt;。&amp;#039;&amp;#039;FPE&amp;#039;&amp;#039;是&amp;#039;&amp;#039;floating-point exception&amp;#039;&amp;#039;（浮点异常）的[[首字母縮略字|首字母缩略字]]&amp;lt;!-- Original: [[acronym]] --&amp;gt;。产生SIGFPE信号时并非一定要涉及[[浮点数|浮点算术]]&amp;lt;!-- Original: [[floating-point arithmetic]] --&amp;gt;，之所以不修改名字是因为这么做会破坏[[向下兼容|向下兼容性]]。&lt;br /&gt;
&lt;br /&gt;
== 描述 ==&lt;br /&gt;
导致SIGFPE被发送给进程的原因有很多。一个常见的例子是由于一个意外输入导致的溢出，或者在程序构造中的错误。&lt;br /&gt;
&lt;br /&gt;
SIGFPE可以被处理。也就是说，程序员可以指定他们在接收到信号时想要的动作，例如调用一个[[子程序]]&amp;lt;!-- Original: [[subroutine]] --&amp;gt;，忽略事件等。&lt;br /&gt;
&lt;br /&gt;
在特定情形下，忽略SIGFPE可能导致程序出现意料之外的行为，包括但不限于由于不断重试违规操作而导致程序挂起。但是，忽略并非由计算造成的SIGFPE信号是安全的，例如通过&amp;lt;code&amp;gt;[[kill (Unix)|kill]]&amp;lt;/code&amp;gt;[[系统调用]]发送的那些。&lt;br /&gt;
&lt;br /&gt;
一个通常的疏忽是认为[[除以零]]是SIGFPE的唯一来源。在一些架构上（包括IA-32{{Citation needed|date=2009-09}}），使用INT_MIN（最小的可以被表示的负整数值）除以-1的整数除法也会触发这个信号，因为商是一个无法被表示的正数。（比如8位有符号整数可以表示-128、+127和它们之间的整数。-128÷-1＝+128 ＞ +127，因此无法被表示而产生溢出并触发此信号）&lt;br /&gt;
&lt;br /&gt;
== 例子 ==&lt;br /&gt;
这是一个尝试执行一个称为[[整数]]&amp;lt;!-- Original: [[integer]] --&amp;gt;[[除以零]]&amp;lt;!-- Original: [[division by zero]] --&amp;gt;，或&amp;#039;&amp;#039;FPE_INTDIV&amp;#039;&amp;#039;的错误算术运算的[[ANSI C]]程序的例子。&lt;br /&gt;
&lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
        int x = 42/0;&lt;br /&gt;
        return 0; /* Never reached */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
在一个运行[[Linux]]&amp;lt;!-- Original: [[Linux]] --&amp;gt;的[[IA-32]]上编译运行，产生下列内容：&lt;br /&gt;
&lt;br /&gt;
 $ gcc -o sigfpe sigfpe.c&lt;br /&gt;
 sigfpe.c: In function ‘main’:&lt;br /&gt;
 sigfpe.c:3: warning: division by zero&lt;br /&gt;
 $ ./sigfpe&lt;br /&gt;
 Floating point exception (core dumped)&lt;br /&gt;
&lt;br /&gt;
一个来自[[GNU侦错器|gdb]]&amp;lt;!-- Original: [[gdb]] --&amp;gt;的[[栈跟踪]]显示在&amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;函数中发生了SIGFPE信号：&lt;br /&gt;
&lt;br /&gt;
 Program received signal SIGFPE, Arithmetic exception.&lt;br /&gt;
 0x08048373 in main ()&lt;br /&gt;
&lt;br /&gt;
== 参考 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== 参阅 ==&lt;br /&gt;
* [[除以零]]&amp;lt;!-- Original: [[Division by zero]] --&amp;gt;&lt;br /&gt;
* [[浮点数|浮点]]&amp;lt;!-- Original: [[Floating point]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Computing signals}}&lt;br /&gt;
&lt;br /&gt;
[[Category:計算機算術]]&lt;br /&gt;
[[Category:计算机错误]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Escarbot</name></author>
	</entry>
</feed>