java – 为什么在u0026u0026,,||的情况下输出会有所不同?
发布时间:2020-05-24 19:10:36 所属栏目:Java 来源:互联网
导读:这是代码段 你能解释一下输出变化的原因吗? 1) public static ShortCkt { public static void main(String args[]) { int i = 0; boolean t = true; boolean f = false, b; b = (t ((i++) == 0)
|
这是代码段 你能解释一下输出变化的原因吗? 1) public static ShortCkt {
public static void main(String args[]) {
int i = 0;
boolean t = true;
boolean f = false,b;
b = (t && ((i++) == 0));
b = (f && ((i+=2) > 0));
System.out.println(i);
}
}
这种情况下的输出为1 2) public static ShortCkt {
public static void main(String args[]) {
int i = 0;
boolean t = true;
boolean f = false,b;
b = (t & ((i++) == 0));
b = (f & ((i+=2) > 0));
System.out.println(i);
}
}
这种情况下的输出是3 3) public static ShortCkt {
public static void main(String args[]) {
int i = 0;
boolean t = true;
boolean f = false,b;
b = (t || ((i++) == 0));
b = (f || ((i+=2) > 0));
System.out.println(i);
}
}
这种情况下的输出是2 4) public static ShortCkt {
public static void main(String args[]) {
int i = 0;
boolean t = true;
boolean f = false,b;
b = (t | ((i++) == 0));
b = (f | ((i+=2) > 0));
System.out.println(i);
}
}
这种情况下的输出是3 解决方法
就像在C/C++&&被评估为“懒惰”而&不是. 如果a是假的那么&& b甚至不评估b就会返回false. 同样适用于|| b:如果第一个操作数a为真,则整个表达式为真,第二个操作数b从不进行求值.对于|但是,a和b都将被评估. 如果在使用&&和/或(或||)有副作用,如您的示例中所示. 旁注:很少有java程序员知道^(xor)也适用于布尔值. (A ^^版本不存在仅仅因为它是多余的.) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
