java – 为什么在\u0026\u0026,&,||的情况下输出会
发布时间:2020-12-14 23:39:31 所属栏目: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)); b = (f ((i+=2) 0)); System.out.println(i); }} 这种情况下
这是代码段
你能解释一下输出变化的原因吗? 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 ^^版本不存在仅仅因为它是多余的.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |