【问题标题】:What happens when "if" statement is ended with a semi colon [duplicate]当“if”语句以分号结尾时会发生什么[重复]
【发布时间】:2015-09-10 18:00:28
【问题描述】:

在一个程序中,我需要一个if 语句,但我错误地将分号放在了语句的末尾。但是,既没有编译时错误,也没有运行时错误。我试图弄清楚这段代码的含义,但毫无希望。

if (i == 10); 
{
    System.out.println("It is here");
    break;
} 

如果你能就这个话题给我启发,那将不胜感激。

【问题讨论】:

标签: java loops if-statement


【解决方案1】:

if 语句与以下块无关:

if (i == 10);

这是一个有效的声明,因为; 表示an empty statementif (i == 10) 然后什么也不做。

{
    System.out.println("It is here");
    break;
}

这是一个有效的code block。尽管在这种情况下没有太大帮助,但它在语法上是正确的。此块在所有情况下都会执行,不受上面if 语句的影响。

【讨论】:

  • 我不知道编译器会接受这个声明。如果“如果 (i == 10);”什么都不做,怎么允许?
  • @KenVors 在语法上是有效的。它不会做任何事情,但如果 i 不再使用,int i; 也不会做任何事情。
  • 感谢您的回答。好的,你是对的。不做任何事情,但将来有可能使用 i。但是,情况与 if 不同。以后绝对不能使用这样的 if 语句。
  • @KenVors 编译器的任务是编译代码,而不是理解它。好的,另一个例子:if(1 == 2) throw new RuntimeException("Oops!");。这也是有效的并且永远不会被执行,因为1 永远不会等于2。另一个例子:for(int i = 5; i > 5; i++) { ... } 永远不会运行一次,因为5 永远不会大于5。并非所有编译的东西都必须有意义;)
  • 好的,我明白你的意思,你是对的,但可能是,我自己也表达不出来。 (英语不是我的母语:)在您的示例中,代码块是合乎逻辑的,但您编写它们是不合逻辑的(从人类的角度来看)。但是,与 if 相同的情况,无论从计算机角度还是从人类角度来看都是不合逻辑的。当您编写“while(true);”时,相同的编译器会警告您。我只是想了解 if 语句有什么特别之处。但是,我了解到它并没有什么特别之处。感谢您的回答,无论如何它都被选为答案;)
猜你喜欢
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 2012-12-16
  • 2019-04-18
  • 1970-01-01
相关资源
最近更新 更多