看板 C_and_CPP 關於我們 聯絡資訊
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)