【问题标题】:why does empty conditional statement for java for loop evaluate to true?为什么java for循环的空条件语句评估为true?
【发布时间】:2017-10-05 14:35:41
【问题描述】:

如果有人在 Empty for loop - for(;;) 或网站上的其他地方提出过这个问题,我深表歉意。

我想知道是否有人知道为什么 java 会选择让他们的解析器/编译器将 for(;;){} 循环中的空条件语句评估为 true 而不是 null 或 void ?

由用户@Mchi 链接

https://developer.mozilla.org/en/JavaScript/Reference/Statements/for

"在每次循环迭代之前要计算的表达式。如果此表达式计算为真,则执行语句。此条件测试是可选的。如果省略,则条件始终计算为真。如果表达式计算为假,则跳过执行到 for 构造之后的第一个表达式。”

我只是好奇。

【问题讨论】:

  • 相反的应该是假的。不是无效的
  • 可能是因为 Java 从 C++ 继承了这个特性,而 C++ 又从 C 继承了这个特性,并且在 1970 年代很久以前有人提出for (;;) 应该是一个有限循环的想法。
  • 请正确标记您的问题。 Java 和 Javascript 是不同的语言。
  • (在 Java 中......循环不会“评估”任何东西。它不是表达式。)
  • 你指的是Java还是JavaScript?

标签: java for-loop conditional


【解决方案1】:

条件语句必须是boolean 类型才能控制循环,这与if()while() 语句中的表达式必须是boolean 类型完全相同。

boolean 的唯一有效值是 truefalse。所以,nullvoid 不适用,没有任何意义。

至于空条件语句,在truefalse这两个可能的值中,他们选择了true,因为绝对不需要一个根本不会循环的循环,而有很多情况我们需要一个永远循环的循环(或直到break。)

【讨论】:

  • 那个,对于循环结构,选择true作为默认值是有意义的。
  • @HuguesMoreau 是的,我修改了答案以表明这一点。
  • 谢谢,我猜不是
  • 我不确定您所说的“我猜不是”是什么意思。这不是“是/否”类型的问题。
  • “因为绝对不需要一个完全不会循环的循环”对不起,我同意这句话——我想没有
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
相关资源
最近更新 更多