[FAQ集] 標準:何謂 undefined behavior?
ptt.cc BBS 站 C_and_CPP 板 FAQ (0.1版)
有關 C 或 C++ 標準規格的問題
Q: 討論 C/C++ 時,聽到說某種寫法的後果是 undefined behavior,何謂也?
A: undefined behavior(未定義行為),這個可嚴重了。就是標準完全不做要
求,實作品可以想怎樣就怎樣,可能可以執行出某種可用的結果,但也大可
以讓我們的程式一執行就當掉,或是把機器燒掉,把程式所控制的洲際導彈
發射出去……。例如
int *pi = 0;
int i = *pi;
此例提取(dereference)一個空指標(null pointer),標準明文說其結果是
undefined behavior。
因為許多 undefined behavior 的寫法,編譯器都不會發出任何警告訊息,
而讓我們的程式看似完美的通過編譯,甚至一時間也執行出我們預期的結果,
所以許多人都輕忽了 undefined behavior 的嚴重性。。
要寫出一個正確的程式,絕不可以去碰會導致 undefined behavior 的寫法。
by Khoguan Phuann
-----------------------------------
敬請指正錯誤,或提出更合適的答案。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.227.252.33
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章