[FAQ集] 標準:C/C++為何要有undefined behavior?
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
推
61.222.148.171 09/08, , 1F
61.222.148.171 09/08, 1F
推
218.164.36.200 09/08, , 2F
218.164.36.200 09/08, 2F
※ 編輯: khoguan 來自: 61.227.252.126 (09/08 21:26)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章