【发布时间】:2012-10-20 21:55:31
【问题描述】:
假设我们有以下 C(或类似语言)代码:
if (x < 10)
do_work1();
else if (x < 5)
do_work2();
在某些情况下会执行此条件的第二个分支吗?编译器会警告无法访问的代码吗?
【问题讨论】:
-
不,它不会被执行。大多数 ide 会警告无法访问的代码。
-
类似的语言可能会超载
>并让它做意想不到的事情。 -
我能想到的另一种情况是,如果
x是一个全局变量,并且您有另一个线程可以将最初大于 10 的x的值更改为不幸的情况下第一次测试后小于5的值。例如x开头是 11。 Thread1 进行第一次测试if (x < 10)为假,之后,Thread2 将x的值更改为 4。 -
例如,如果
x是一个易失性的并且在if部分之后 而在else if部分之前 更改,则在某些情况下可能会执行 else 部分。像这样的异步更改想起来有点离谱,但肯定是可能的。 -
@AnthonyPegram 当然,如果你这样做,你所有的同事都会准备好勒死你......