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