在Java中,if内的代码甚至都不是已编译代码的一部分。它必须编译,但不会写入已编译的字节码。它实际上取决于编译器,但我不知道没有对它进行优化的编译器。规则在JLS中定义:
优化的编译器可能会意识到语句x = 3; 永远不会执行,可以选择从生成的类文件中省略该语句的代码,但是语句x = 3;
就此处指定的技术意义而言,“不被视为“无法访问”。这种不同处理的原理是允许程序员定义“标志变量”,例如:
static final boolean DEBUG = false;然后编写如下代码:
if (DEBUG) { x=3; }这个想法是应该可以将DEBUG的值从false更改为true或从true更改为false,然后正确编译代码,而无需对程序文本进行其他更改。
不了解C。



