class Test {
public static void main(String[] args) {
int a = 3;
int b = 4;
if ((a>b&(a++)>b&&(--b)<a)|(b++)<=(a--)) {
System.out.println("判断结果为true, a=" + a + ",b=" + b);
} else {
System.out.println("判断结果为false, a=" + a + ",b=" + b);
}
}
}
上面这个例子很容易出错。对于true和false我们可以判断出来(不管思路是对的还是错的,这里的答案都是true),但是对于a和b的值来说,我们第一反应就是看a和b自增或自减了多少次,然后就可以很快的得出结果,但是我们却没有注意到&和&&。 这里我简单说下&和&&的区别。&&运算符是当第一个表达式的值是false时,它将不会往后面计算;&运算符是不管第一个表达式的值是true还是false,它都会继续运算。
所以在上面的例子中,(a++)>b&&(--b)<a第一个表达式的值是false,所以后面的表达式将不会计算,因此最终结果应该是:a=3,b=5。关于&和&&的一道容易出错的小例题
最新推荐文章于 2025-05-08 11:31:43 发布
本文通过一个具体的Java代码示例详细解释了条件运算中的逻辑运算符&和&&的区别,展示了如何正确理解这些运算符在条件判断中的行为,以及它们如何影响变量的最终值。

790

被折叠的 条评论
为什么被折叠?



