我们刚刚找到了一位同事和我,用 If 条件语法编写了一个奇怪的编译语法:
if (true); {
foo();
}
这里是否有人向我们解释这种奇怪的语法? THX。
答案 0 :(得分:8)
对我来说,它看起来像一个带有空体的if语句,后跟一个始终执行的代码块(与if语句无关)。例如,foo也在这里执行:
if (false); {
foo();
}
答案 1 :(得分:6)
第一部分if (true);
只是一个以;
结尾的无操作条件。其余的是在新范围块内调用foo()
。您应该会发现始终会调用foo()
。
答案 2 :(得分:4)
这没有任何实际意义,但在语法上是正确的。它也可以写成
if (true)
{
// do nothing
}
{
foo();
}
围绕foo()的{};在这种情况下没有任何意义如果定义了变量,它将限制在{}内定义的变量的范围。
{
int i=0;
System.out.println(i);
}
{
String i="hello";
System.out.println(i);
}
工作正常。
答案 3 :(得分:1)
我认为这相当于
if (true) {};
foo();
因为if语句在分号后结束,而foo语句刚刚放在一个块({})中 ...
答案 4 :(得分:1)
如果或者有人计划稍后写一个条件但从未做过这样的事情,可能会留下旧的调试......
我认为你可以安全地删除这个if语句,这样做绝对没有意义。
答案 5 :(得分:1)
正如其他人所指出的那样,语法上它是一个带有空执行语句的条件(即什么都不做),然后调用包含在范围括号内的foo()。 foo()总是被执行。实际上,如果您在实际案例中发现了这一点,而不是编程测试,我怀疑其中一个:
答案 6 :(得分:0)
这是死代码。 if块无用。
相当于
if(doesn't matter whats here) {}
foo();