当前位置: 首页 > 面试题库 >

Java表达式中子表达式的求值顺序

朱伯寅
2023-03-14
问题内容

我有以下代码片段:

int x=2,y=3;
if ( (y == x++) | (x < ++y) )
// rest of code

我知道在C
++中,您被教导不要依赖子表达式的求值顺序,因为它不能保证完全是任何顺序。因此,此代码将是错误的,并且不能保证条件中表达式所产生的布尔值是真实的(例如,可以在第一次等式测试中对y进行递增运算)。由于我是在Java认证书中阅读此代码的,因此我认为Java并非如此。.我的意思是,我是否保证Java的评估顺序始终是从左到右?因此,以上表达式应始终为true。


问题答案:

是的,保证可以从左到右执行-至少要像执行一样。这在JLS
15.7中
定义

Java编程语言保证运算符的操作数似乎按特定的评估顺序(即从左到右)进行评估。

运算|符的第一个操作数将得出3 == 2,并得出false,但是第二个操作数将得出3 <4,并得出true。

话虽如此,我绝对会避免需要非常仔细阅读的代码…



 类似资料:
  • 问题内容: 我有以下代码片段: 我知道在C ++中,您被教导不要依赖子表达式的求值顺序,因为它不能保证完全是任何顺序。因此,此代码将是错误的,并且不能保证条件中表达式所产生的布尔值是真实的(例如,可以在第一次等式测试中对y进行递增运算)。由于我是在Java认证书中阅读此代码的,因此我认为Java并非如此。.我的意思是,我是否保证Java的评估顺序始终是从左到右?因此,以上表达式应始终为true。

  • 本文向大家介绍解释Java正则表达式中的子表达式“ [...]”,包括了解释Java正则表达式中的子表达式“ [...]”的使用技巧和注意事项,需要的朋友参考一下 子表达式“ [...] ”匹配括号中指定的任何单个字符。 例子1 输出结果 例子2 以下Java程序从用户那里接收5个字符串,并打印包含元音字母的字符串/单词。 输出结果

  • 我正在寻找一种相对简单的(与编写解析器相比)方法来计算Java中的布尔表达式,我不想使用JEP库。 我有一个字符串表达式,如:

  • 问题内容: 有没有办法让AngularJS在模型数据中评估表达式? HTML: 模型: 最终结果将是:。 问题答案: 您可以使用该服务来插值字符串… JSFiddle

  • 我目前正在学习Haskell,突然遇到了这个表达式。 我的直觉是,由于用0除法,这将导致运行时错误,但从测试来看,情况并非如此。 我的结论是,这一定是由于Haskell内部的懒惰评估。因为匹配任何东西,所以它不会检查它与什么比较? 所以,如果有人能告诉我这个评估是否正确,如果不正确,为什么。另外,请详细说明在不实际查看表达式的情况下,案例行可以匹配的前提。

  • 我正在练习计算let表达式的问题,但我不理解这个表达式的输出。 下面是一个表达: 输出应该是[1,2,4,8]。有人能一步一步地解释为什么这是输出吗