gca*_*lli -5 c# java boolean-expression
我正在阅读一些旧代码并遇到一个不合格的布尔表达式,如下所示:
if (first && second || third)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
有两种有效的方法来限定该表达式.
if ((first && second) || third)
Run Code Online (Sandbox Code Playgroud)
和
if (first && (second || third))
Run Code Online (Sandbox Code Playgroud)
对第一,第二和第三的某些值进行不同的评估.
我在C#中尝试了这个,结果与第一个鉴定方法一致.好奇心在我身上变得更好,我也在Java中试用了它,这与第二种方法一致.为什么是这样?不同的语言评估是否应该相同?
Java和C#&&之前都进行了评估,||因为逻辑AND在两种语言中都有更高的优先级:
我认为你的测试运行不正确.
正如您通过运行Java所看到的那样
class Test {
public static void main (String[] args) {
boolean a = true;
boolean b = true;
boolean c = false;
System.out.println(a || b && c);
System.out.println((a || b) && c);
System.out.println(a || (b && c));
}
}
Run Code Online (Sandbox Code Playgroud)
和C#
using System;
public class Test
{
public static void Main()
{
bool a = true;
bool b = true;
bool c = false;
Console.WriteLine(a || b && c);
Console.WriteLine((a || b) && c);
Console.WriteLine(a || (b && c));
}
}
Run Code Online (Sandbox Code Playgroud)
Ideone上的演示,都产生相同的输出:
true false true
&&以前||用两种语言评估哪个节目.
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |