作者khoguan (Khoguan Phuann)
看板C_and_CPP
标题[FAQ集] 标准:C/C++为何要有undefined behavior?
时间Wed Sep 7 23:27:30 2005
ptt.cc BBS 站 C_and_CPP 板 FAQ (0.1版)
有关 C 或 C++ 标准规格的问题
Q: C/C++ 一大堆 undefined behavior,处处陷阱,为何不乾脆清楚要求某种
後果就好了?
A: (本则解说,主要出自 C FAQ 11.34)
C/C++ 会在许多地方放任实作品「为所欲为」,是为了要让各别编译器根
据不同平台(硬体、OS等)编译出最有效率的机器码来处理合理的、常见
的状况,但不去针对许多不合理的状况硬性规定明确的行为,让所有的程
式去负担为了检验处理这部份所需的额外的码(由编译器在背後替我们产
生)。这些多出来的东西会对执行效率有不良影响,而重视效率正是C/C++
会如此普及的重要原因之一。
一份程式语言的标准可看做是语言使用者(programmer)与编译器实作者
(编译器提供者)之间的「契约」。这份契约包含了实作者同意提供而且
使用者也可以放心利用的语言特性;但同时也包含了使用者同意遵守而且
实作者也可以信任使用者将会遵守的规则。得要双方面信守「承诺」,这
才容易产出能够正确运作的程式。假如任一方「违约」,那就没戏唱了。
translated & edited by Khoguan Phuann
---------------------------------------
敬请指正错误,或提出更合适的答案。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.227.252.33
1F:推 renderer:推推推 K 大太有料了 61.222.148.171 09/08
2F:推 drkkimo:路过推一下 218.164.36.200 09/08
※ 编辑: khoguan 来自: 61.227.252.126 (09/08 21:26)