[FAQ集] 標準:何謂 unspecified?
ptt.cc BBS 站 C_and_CPP 板 FAQ (0.1版)
有關 C 或 C++ 標準規格的問題
Q: 討論 C/C++時,聽到說某種寫法的後果是 unspecified,何謂也?
A: unspecified(未指定) 則是由實作品決定究竟如何做,但不要求實作品要在
其文件中明文告知(標準中有時候會給定一個可能性的範圍,讓實作品選擇)。
例如下列敘述,呼叫到三個函式:
f() + g() * h();
因為 C/C++對運算子優先順序的明文規定,乘的動作要先完成,才能再做
加的動作。但是究竟 f() 或 g() 或 h() 這三者本身哪個先呼叫,卻是
unspecified,實作品無義務告知我們。 所以我們不能假定 g() 和 h()
一定比 f()先被呼叫。(實作品大可以先呼叫完 f()然後把其傳回值存起來,
等著稍後使用。)這個例子也告訴我們一個重要觀念,「運算子的優先順序
和個別運算元的求值先後並無絕對關係」。
要寫出具有可移植性的程式,就不可以去依賴某種 unspecified的行為。
by Khoguan Phuann
-----------------------------------
敬請指正錯誤,或提出更合適的答案。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.227.252.33
※ 編輯: khoguan 來自: 61.227.252.33 (09/07 23:46)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章