楼上说对了,那请解释一下|的问题,就散分,为什么有了|以后 X && Y | Z ==> X&&(Y|Z)
如果是 X && Y | Z 结果应该是五吧. 因为|两边是布尔运算值时,是可以作为逻辑运算的.只是不能用作短路方式.所以y要自加三次.
x && y | z 好象没有结果输出啊
class Test { public static void main(String[] args) { int x = 1; int y = 2; System.out.println(""+((y++>2) && (y++<2) | (y++>2))); if ( (y++>2) && (y++<2) | (y++>2)) System.out.println(y); } }(y++>2) && (y++<2) | (y++>2)的结果为false,当然应该是没有输入的啊,但我写的这段代码,输出结果是: false 6谁能解释一下啊??我已经被绕晕了
上面的代码输出结果为4.
应该只有两次y的自加的原因.
如果是&&时,出现false就不再进行后面的运算.
如果是||时,出现true就不再进行后面的运算.
好像应该这样解释吧.:P
结果应该是五吧.
因为|两边是布尔运算值时,是可以作为逻辑运算的.只是不能用作短路方式.所以y要自加三次.
好象没有结果输出啊
{
public static void main(String[] args)
{
int x = 1;
int y = 2;
System.out.println(""+((y++>2) && (y++<2) | (y++>2)));
if ( (y++>2) && (y++<2) | (y++>2))
System.out.println(y);
}
}(y++>2) && (y++<2) | (y++>2)的结果为false,当然应该是没有输入的啊,但我写的这段代码,输出结果是:
false
6谁能解释一下啊??我已经被绕晕了
我在这一条System.out.println(""+((y++>2) && (y++<2) | (y++>2)));后y的值为:3;
再运行下面的if ( (y++>2) && (y++<2) | (y++>2))就为true,又自加三次,结果为6.
System.out.println(y);还会执行呢?