Files
hustoj/web/cppreference-zh/chmhelp/c-language-behavior.html
2025-08-01 12:57:54 +08:00

271 lines
24 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>&#26410;&#23450;&#20041;&#34892;&#20026;</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_language_behavior skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#26410;&#23450;&#20041;&#34892;&#20026;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="c.html">c</a>&lrm; | <a href="c-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>C &#35821;&#35328;&#26631;&#20934;&#31934;&#30830;&#25351;&#23450;&#20102; C &#35821;&#35328;&#31243;&#24207;&#30340;<a href="https://zh.cppreference.com/mwiki/index.php?title=c/language/as_if&amp;action=edit&amp;redlink=1" class="new" title="c/language/as if&#65288;&#39029;&#38754;&#19981;&#23384;&#22312;&#65289;">&#21487;&#35266;&#23519;&#34892;&#20026;</a>&#65292;&#38500;&#20102;&#19979;&#21015;&#20998;&#31867;&#20043;&#19968;&#65306;</p>
<ul>
<li><i>&#26410;&#23450;&#20041;&#34892;&#20026;</i> - &#31243;&#24207;&#30340;&#35813;&#34892;&#20026;&#27809;&#26377;&#38480;&#21046;&#12290;&#26410;&#23450;&#20041;&#34892;&#20026;&#30340;&#20363;&#23376;&#26159;&#36234;&#36807;&#25968;&#32452;&#36793;&#30028;&#30340;&#35775;&#38382;&#12289;&#26377;&#31526;&#21495;&#25972;&#25968;&#28322;&#20986;&#12289;&#31354;&#25351;&#38024;&#35299;&#24341;&#29992;&#12289;&#22312;&#34920;&#36798;&#24335;&#20013;<a href="c-language-eval_order.html">&#36229;&#36807;&#19968;&#27425;</a>&#20462;&#25913;&#26631;&#37327;&#32780;&#20854;&#20013;&#26080;&#39034;&#24207;&#28857;&#12289;&#36890;&#36807;&#19981;&#21516;&#31867;&#22411;&#30340;&#25351;&#38024;&#35775;&#38382;&#23545;&#35937;&#65292;&#31561;&#31561;&#12290;&#32534;&#35793;&#22120;&#19981;&#35201;&#27714;&#35786;&#26029;&#26410;&#23450;&#20041;&#34892;&#20026;&#65288;&#23613;&#31649;&#22810;&#25968;&#31616;&#21333;&#24773;&#24418;&#26159;&#24471;&#21040;&#35786;&#26029;&#30340;&#65289;&#65292;&#19988;&#32534;&#35793;&#21518;&#30340;&#31243;&#24207;&#19981;&#35201;&#27714;&#20570;&#20219;&#20309;&#26377;&#24847;&#20041;&#30340;&#20107;&#12290;</li>
</ul>
<ul>
<li><i>&#26410;&#25351;&#23450;&#34892;&#20026;</i> - &#23481;&#35768;&#20108;&#31181;&#25110;&#22810;&#31181;&#34892;&#20026;&#65292;&#19988;&#19981;&#35201;&#27714;&#23454;&#29616;&#35268;&#33539;&#27599;&#31181;&#34892;&#20026;&#12290;&#20363;&#22914;&#65292;<a href="c-language-eval_order.html">&#27714;&#20540;&#39034;&#24207;</a>&#12289;&#21516;&#26679;&#30340;<a href="c-language-string_literal.html">&#23383;&#31526;&#20018;&#23383;&#38754;&#37327;</a>&#26159;&#21542;&#26377;&#21035;&#65292;&#31561;&#12290;&#27599;&#20010;&#26410;&#25351;&#23450;&#34892;&#20026;&#23548;&#33268;&#19968;&#32452;&#21512;&#27861;&#32467;&#26524;&#20043;&#19968;&#65292;&#24182;&#19988;&#21487;&#20197;&#22312;&#21516;&#19968;&#31243;&#24207;&#20013;&#37325;&#22797;&#26102;&#20135;&#29983;&#19981;&#21516;&#32467;&#26524;&#12290;</li>
</ul>
<ul>
<li><i>&#23454;&#29616;&#23450;&#20041;&#34892;&#20026;</i> - &#22312;&#26410;&#25351;&#23450;&#34892;&#20026;&#20043;&#19978;&#65292;&#23454;&#29616;&#35268;&#33539;&#20102;&#22914;&#20309;&#36873;&#25321;&#12290;&#20363;&#22914;&#65292;&#23383;&#33410;&#20013;&#30340;&#20301;&#25968;&#65292;&#25110;&#26377;&#31526;&#21495;&#25972;&#25968;&#21491;&#31227;&#26159;&#31639;&#26415;&#36824;&#26159;&#36923;&#36753;&#12290;</li>
</ul>
<ul>
<li><i>&#26412;&#22320;&#29615;&#22659;&#38480;&#23450;&#34892;&#20026;</i> - &#20381;&#36182;&#20110;<a href="c-locale-setlocale.html">&#24403;&#21069;&#36873;&#25321;&#30340;&#26412;&#22320;&#29615;&#22659;</a>&#30340;&#23454;&#29616;&#23450;&#20041;&#34892;&#20026;&#12290;&#20363;&#22914;&#65292; <span class="t-lc"><a href="c-string-byte-islower.html">islower</a></span> &#23545;&#20219;&#20309; 26 &#20010;&#23567;&#20889;&#25289;&#19969;&#23383;&#27597;&#22806;&#30340;&#23383;&#31526;&#26159;&#21542;&#36820;&#22238; true&#12290;</li>
</ul>
<p>&#65288;&#27880;&#24847;&#65306;<a href="c-language-conformance.html">&#20005;&#26684;&#36981;&#20174;</a>&#30340;&#31243;&#24207;&#19981;&#20381;&#36182;&#20219;&#20309;&#26410;&#25351;&#23450;&#12289;&#26410;&#23450;&#20041;&#25110;&#23454;&#29616;&#23450;&#20041;&#34892;&#20026;&#65289;</p>
<p>&#35201;&#27714;&#32534;&#35793;&#22120;&#23545;&#36829;&#32972;&#20219;&#20309; C &#35821;&#27861;&#35268;&#21017;&#25110;&#35821;&#20041;&#32422;&#26463;&#30340;&#20219;&#20309;&#31243;&#24207;&#21457;&#24067;&#35786;&#26029;&#28040;&#24687;&#65288;&#38169;&#35823;&#25110;&#35686;&#21578;&#65289;&#65292;&#21363;&#20351;&#20854;&#34892;&#20026;&#34987;&#25351;&#23450;&#20026;&#26410;&#23450;&#20041;&#25110;&#23454;&#29616;&#23450;&#20041;&#65292;&#25110;&#32773;&#32534;&#35793;&#22120;&#21487;&#25552;&#20379;&#35821;&#35328;&#25193;&#23637;&#20197;&#20801;&#35768;&#27492;&#31181;&#31243;&#24207;&#34987;&#25509;&#21463;&#12290;&#21478;&#22806;&#65292;&#19981;&#35201;&#27714;&#23545;&#26410;&#23450;&#20041;&#34892;&#20026;&#35786;&#26029;&#12290;</p>
<h3><span class="mw-headline" id="UB_.E4.B8.8E.E4.BC.98.E5.8C.96">UB &#19982;&#20248;&#21270;</span></h3>
<p>&#22240;&#20026;&#27491;&#30830;&#30340; C &#31243;&#24207;&#26159;&#27809;&#26377;&#26410;&#23450;&#20041;&#34892;&#20026;&#30340;&#65292;&#32534;&#35793;&#22120;&#21487;&#20197;&#22312;&#21551;&#29992;&#20248;&#21270;&#30340;&#26465;&#20214;&#19979;&#32534;&#35793;&#30830;&#23454;&#26377; UB &#30340;&#31243;&#24207;&#26102;&#65292;&#29983;&#25104;&#19981;&#26399;&#24453;&#30340;&#32467;&#26524;&#65306;</p>
<p>&#20363;&#22914;&#65292;</p>
<h4><span class="mw-headline" id=".E6.9C.89.E7.AC.A6.E5.8F.B7.E6.BA.A2.E5.87.BA">&#26377;&#31526;&#21495;&#28322;&#20986;</span></h4>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="kw4">int</span> foo<span class="br0">(</span><span class="kw4">int</span> x<span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">return</span> x<span class="sy2">+</span><span class="nu0">1</span> <span class="sy1">&gt;</span> x<span class="sy4">;</span> <span class="co1">// &#30495;&#25110;&#20026;&#26377;&#31526;&#21495;&#28322;&#20986;&#23548;&#33268;&#30340; UB</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#20197;&#32534;&#35793;&#25104;&#65288;<a rel="nofollow" class="external text" href="https://godbolt.org/z/D249FL">&#28436;&#31034;</a>&#65289;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1">foo<span class="sy4">:</span>
movl $<span class="nu19">1</span>, <span class="sy2">%</span>eax
ret</pre></div>
</div>
<h4><span class="mw-headline" id=".E8.B6.8A.E7.95.8C.E8.AE.BF.E9.97.AE">&#36234;&#30028;&#35775;&#38382;</span></h4>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="kw4">int</span> table<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">0</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">int</span> exists_in_table<span class="br0">(</span><span class="kw4">int</span> v<span class="br0">)</span>
<span class="br0">{</span>
<span class="co1">// &#22312;&#26368;&#21021;&#30340; 4 &#20010;&#36845;&#20195;&#20013;&#36820;&#22238;&#30495;&#25110;&#22240;&#20026;&#36234;&#30028;&#35775;&#38382; UB</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> i <span class="sy1">&lt;=</span> <span class="nu0">4</span><span class="sy4">;</span> i<span class="sy2">++</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span>table<span class="br0">[</span>i<span class="br0">]</span> <span class="sy1">==</span> v<span class="br0">)</span> <span class="kw1">return</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#20197;&#32534;&#35793;&#25104;&#65288;<a rel="nofollow" class="external text" href="https://godbolt.org/z/qoD2uP">&#28436;&#31034;</a>&#65289;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1">exists_in_table<span class="sy4">:</span>
movl $<span class="nu19">1</span>, <span class="sy2">%</span>eax
ret</pre></div>
</div>
<h4><span class="mw-headline" id=".E6.9C.AA.E5.88.9D.E5.A7.8B.E5.8C.96.E6.A0.87.E9.87.8F">&#26410;&#21021;&#22987;&#21270;&#26631;&#37327;</span></h4>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1">_Bool p<span class="sy4">;</span> <span class="co1">// &#26410;&#21021;&#22987;&#21270;&#23616;&#37096;&#21464;&#37327;</span>
<span class="kw1">if</span><span class="br0">(</span>p<span class="br0">)</span> <span class="co1">// &#35775;&#38382;&#26410;&#21021;&#22987;&#21270;&#26631;&#37327;&#26159; UB</span>
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">&quot;p is true&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span><span class="sy3">!</span>p<span class="br0">)</span> <span class="co1">// &#35775;&#38382;&#26410;&#21021;&#22987;&#21270;&#26631;&#37327;&#26159; UB</span>
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">&quot;p is false&quot;</span><span class="br0">)</span><span class="sy4">;</span></pre></div>
</div>
<p>&#21487;&#33021;&#20135;&#29983;&#19979;&#21015;&#36755;&#20986;&#65288;&#21487;&#22312;&#19968;&#20010;&#26087;&#29256;&#26412; gcc &#35266;&#23519;&#21040;&#65289;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1">p is <span class="kw2">true</span>
p is <span class="kw2">false</span></pre></div>
</div>
<div class="t-example">
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a> f<span class="br0">(</span><span class="kw4">int</span> x<span class="br0">)</span>
<span class="br0">{</span>
<a href="c-types-size_t.html"><span class="kw100">size_t</span></a> a<span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span>x<span class="br0">)</span> <span class="co1">// x&#20026;&#38750;&#38646;&#25110;UB</span>
a <span class="sy1">=</span> <span class="nu0">42</span><span class="sy4">;</span>
<span class="kw1">return</span> a<span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
</div>
<p>&#21487;&#20197;&#32534;&#35793;&#25104;&#65288;<a rel="nofollow" class="external text" href="https://godbolt.org/z/u9lBlY">&#28436;&#31034;</a>&#65289;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1">f<span class="sy4">:</span>
mov eax, <span class="nu0">42</span>
ret</pre></div>
</div>
<h4><span class="mw-headline" id=".E9.9D.9E.E6.B3.95.E6.A0.87.E9.87.8F">&#38750;&#27861;&#26631;&#37327;</span></h4>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="kw4">int</span> f<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span> <span class="br0">{</span>
_Bool b <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="kw4">unsigned</span> <span class="kw4">char</span><span class="sy2">*</span> p <span class="sy1">=</span><span class="br0">(</span><span class="kw4">unsigned</span> <span class="kw4">char</span><span class="sy2">*</span><span class="br0">)</span><span class="sy3">&amp;</span>b<span class="sy4">;</span>
<span class="sy2">*</span>p <span class="sy1">=</span> <span class="nu0">10</span><span class="sy4">;</span>
<span class="co1">// &#20174; b &#35835;&#21462;&#29616;&#22312;&#26159; UB</span>
<span class="kw1">return</span> b <span class="sy1">==</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#32534;&#35793;&#25104;&#65288;<a rel="nofollow" class="external text" href="https://gcc.godbolt.org/z/JGG6uI">&#28436;&#31034;</a>&#65289;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1">f<span class="br0">(</span><span class="br0">)</span><span class="sy4">:</span>
movl $<span class="nu19">11</span>, <span class="sy2">%</span>eax
ret</pre></div>
</div>
<h4><span class="mw-headline" id=".E7.A9.BA.E6.8C.87.E9.92.88.E8.A7.A3.E5.BC.95.E7.94.A8">&#31354;&#25351;&#38024;&#35299;&#24341;&#29992;</span></h4>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="kw4">int</span> foo<span class="br0">(</span><span class="kw4">int</span><span class="sy2">*</span> p<span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">int</span> x <span class="sy1">=</span> <span class="sy2">*</span>p<span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span><span class="sy3">!</span>p<span class="br0">)</span> <span class="kw1">return</span> x<span class="sy4">;</span> <span class="co1">// &#20026;&#19978;&#36848; UB &#65292;&#25110;&#32477;&#19981;&#37319;&#29992;&#27492;&#20998;&#25903;</span>
<span class="kw1">else</span> <span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">int</span> bar<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">int</span><span class="sy2">*</span> p <span class="sy1">=</span> <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="sy4">;</span>
<span class="kw1">return</span> <span class="sy2">*</span>p<span class="sy4">;</span> <span class="co1">// &#26080;&#26465;&#20214; UB</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#20197;&#32534;&#35793;&#25104;&#65288; <a rel="nofollow" class="external text" href="https://godbolt.org/z/W6nz9j">foo &#29992; gcc &#65292; bar &#29992; clang</a> &#65289;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1">foo<span class="sy4">:</span>
xorl <span class="sy2">%</span>eax, <span class="sy2">%</span>eax
ret
bar<span class="sy4">:</span>
retq</pre></div>
</div>
<h4><span class="mw-headline" id=".E8.AE.BF.E9.97.AE.E4.BC.A0.E9.80.92.E7.BB.99_realloc_.E7.9A.84.E6.8C.87.E9.92.88">&#35775;&#38382;&#20256;&#36882;&#32473; realloc &#30340;&#25351;&#38024;</span></h4>
<div class="t-example">
<p>&#36873;&#25321; Clang &#20197;&#35266;&#23519;&#31034;&#20986;&#30340;&#36755;&#20986;</p>
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="co2">#include &lt;stdio.h&gt;</span>
<span class="co2">#include &lt;stdlib.h&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">int</span> <span class="sy2">*</span>p <span class="sy1">=</span> <span class="br0">(</span><span class="kw4">int</span><span class="sy2">*</span><span class="br0">)</span><a href="c-memory-malloc.html"><span class="kw403">malloc</span></a><span class="br0">(</span><span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">int</span> <span class="sy2">*</span>q <span class="sy1">=</span> <span class="br0">(</span><span class="kw4">int</span><span class="sy2">*</span><span class="br0">)</span><a href="c-memory-realloc.html"><span class="kw405">realloc</span></a><span class="br0">(</span>p, <span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="sy2">*</span>p <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// &#35775;&#38382;&#20256;&#36882;&#32473; realloc &#30340;&#25351;&#38024;&#26159; UB</span>
<span class="sy2">*</span>q <span class="sy1">=</span> <span class="nu0">2</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>p <span class="sy1">==</span> q<span class="br0">)</span> <span class="co1">// &#35775;&#38382;&#20256;&#36882;&#32473; realloc &#30340;&#25351;&#38024;&#26159; UB</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;%d%d<span class="es1">\n</span>&quot;</span>, <span class="sy2">*</span>p, <span class="sy2">*</span>q<span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#33021;&#30340;&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">12</pre></div>
</div>
</div>
<h4><span class="mw-headline" id=".E6.97.A0.E5.89.AF.E6.95.88.E5.BA.94.E7.9A.84.E6.97.A0.E9.99.90.E5.BE.AA.E7.8E.AF">&#26080;&#21103;&#25928;&#24212;&#30340;&#26080;&#38480;&#24490;&#29615;</span></h4>
<div class="t-example">
<p>&#36873;&#25321; Clang &#20197;&#35266;&#23519;&#31034;&#20986;&#30340;&#36755;&#20986;</p>
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="co2">#include &lt;stdio.h&gt;</span>
<span class="kw4">int</span> fermat<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">const</span> <span class="kw4">int</span> MAX <span class="sy1">=</span> <span class="nu0">1000</span><span class="sy4">;</span>
<span class="kw4">int</span> a<span class="sy1">=</span><span class="nu0">1</span>,b<span class="sy1">=</span><span class="nu0">1</span>,c<span class="sy1">=</span><span class="nu0">1</span><span class="sy4">;</span>
<span class="co1">// &#26080;&#21103;&#25928;&#24212;&#30340;&#26080;&#38480;&#24490;&#29615;&#26159; UB</span>
<span class="kw1">while</span> <span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span><span class="br0">(</span><span class="br0">(</span>a<span class="sy2">*</span>a<span class="sy2">*</span>a<span class="br0">)</span> <span class="sy1">==</span> <span class="br0">(</span><span class="br0">(</span>b<span class="sy2">*</span>b<span class="sy2">*</span>b<span class="br0">)</span><span class="sy2">+</span><span class="br0">(</span>c<span class="sy2">*</span>c<span class="sy2">*</span>c<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span> <span class="kw1">return</span> <span class="nu0">1</span><span class="sy4">;</span>
a<span class="sy2">++</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>a<span class="sy1">&gt;</span>MAX<span class="br0">)</span> <span class="br0">{</span> a<span class="sy1">=</span><span class="nu0">1</span><span class="sy4">;</span> b<span class="sy2">++</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="kw1">if</span> <span class="br0">(</span>b<span class="sy1">&gt;</span>MAX<span class="br0">)</span> <span class="br0">{</span> b<span class="sy1">=</span><span class="nu0">1</span><span class="sy4">;</span> c<span class="sy2">++</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="kw1">if</span> <span class="br0">(</span>c<span class="sy1">&gt;</span>MAX<span class="br0">)</span> <span class="br0">{</span> c<span class="sy1">=</span><span class="nu0">1</span><span class="sy4">;</span><span class="br0">}</span>
<span class="br0">}</span>
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span>fermat<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">&quot;Fermat&#39;s Last Theorem has been disproved.&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">else</span>
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">&quot;Fermat&#39;s Last Theorem has not been disproved.&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#33021;&#30340;&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">Fermat&#39;s Last Theorem has been disproved.</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">&#24341;&#29992;</span></h3>
<div class="t-ref-std-11">
<ul>
<li>C11 &#26631;&#20934;&#65288;ISO/IEC 9899:2011&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>3.4 Behavior (p: 3-4)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>4/2 Undefined behavior (p: 8)</li>
</ul>
</dd>
</dl>
<div class="t-ref-std-c99">
<ul>
<li>C99 &#26631;&#20934;&#65288;ISO/IEC 9899:1999&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>3.4 Behavior (p: 3-4)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>4/2 Undefined behavior (p: 7)</li>
</ul>
</dd>
</dl>
<div class="t-ref-std-c89">
<ul>
<li>C89/C90 &#26631;&#20934;&#65288;ISO/IEC 9899:1990&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>1.6 DEFINITIONS OF TERMS</li>
</ul>
</dd>
</dl>
</div>
<h3><span class="mw-headline" id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5">&#22806;&#37096;&#38142;&#25509;</span></h3>
<ul>
<li><a rel="nofollow" class="external text" href="http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html">&#27599;&#20010; C &#31243;&#24207;&#21592;&#37117;&#35813;&#30693;&#36947;&#20851;&#20110;&#26410;&#23450;&#20041;&#34892;&#20026;&#30340;&#20107; #1/3</a></li>
<li><a rel="nofollow" class="external text" href="http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html">&#27599;&#20010; C &#31243;&#24207;&#21592;&#37117;&#35813;&#30693;&#36947;&#20851;&#20110;&#26410;&#23450;&#20041;&#34892;&#20026;&#30340;&#20107; #2/3</a></li>
<li><a rel="nofollow" class="external text" href="http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_21.html">&#27599;&#20010; C &#31243;&#24207;&#21592;&#37117;&#35813;&#30693;&#36947;&#20851;&#20110;&#26410;&#23450;&#20041;&#34892;&#20026;&#30340;&#20107; #3/3</a></li>
<li><a rel="nofollow" class="external text" href="http://blogs.msdn.com/b/oldnewthing/archive/2014/06/27/10537746.aspx">&#26410;&#23450;&#20041;&#34892;&#20026;&#33021;&#23548;&#33268;&#26102;&#38388;&#26053;&#34892;&#65288;&#22312;&#25152;&#26377;&#20107;&#39033;&#20013;&#65292;&#26102;&#38388;&#26053;&#34892;&#21487;&#26159;&#26368;&#24778;&#20154;&#30340;&#65289;</a></li>
<li><a rel="nofollow" class="external text" href="http://www.cs.utah.edu/~regehr/papers/overflow12.pdf">&#20102;&#35299; C/C++ &#20013;&#30340;&#25972;&#25968;&#28322;&#20986;</a></li>
<li><a rel="nofollow" class="external text" href="http://kukuruku.co/hub/cpp/undefined-behavior-and-fermats-last-theorem">&#26410;&#23450;&#20041;&#34892;&#20026;&#21450;&#36153;&#39532;&#26368;&#21518;&#23450;&#29702;</a></li>
<li><a rel="nofollow" class="external text" href="http://lwn.net/Articles/342330/">&#31354;&#25351;&#38024;&#30340;&#36259;&#20107;&#65292; part 1</a> &#65288; Linux 2.6.30 &#20013;&#30001;&#31354;&#25351;&#38024;&#35299;&#24341;&#29992;&#23548;&#33268;&#30340;&#26410;&#23450;&#20041;&#34892;&#20026;&#25152;&#24341;&#21457;&#30340;&#23616;&#37096;&#28389;&#29992;&#65289;</li>
</ul>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin"></table>
</div>
</div>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>