精華區beta C_and_CPP 關於我們 聯絡資訊
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