作者khoguan (Khoguan Phuann)
看板C_and_CPP
标题[FAQ集] 标准:何谓 unspecified?
时间Wed Sep 7 23:21:16 2005
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)