int x = 1,y = 1;
if(x++==1 | ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);
为什么输出的x 是7,y 是2?
int x = 1,y = 1;
if(x++==1 | ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);
为什么输出的x 是7,y 是2?
单竖线|操作,是将各个操作数转换成二进制,然后各位相或操作的结果
4|4 100|100 100和100 各位相或操作100 4
5|4 101|100 100和100 各位相或操作101 5
8|4 1000|100 1000和0100 各位相或操作1100 12
那么问题中的x++==1 | ++y==1操作的结果就是0|1 结果就是1 就是true,所以x=7。y=2就不用解释了吧
首先要清楚:“||”具有短路功能,但是“|”没有短路功能
所以就很简单了,在判断条件中“x++==1”:先比较后自增,所以返回true,x=2。
因为不会短路,所以依然会判断条件“++y==1”:先自增后比较,y=2,返回false。
进入if中的代码块,x被赋值为7。
所以结果:x=2,y=7
int x = 1,y = 1;
if(x++==1 | ++y==1)
//x++==1先比较x==1(x此时为1,为true),再x=x+1(x=2)
//‘|’运算中,2边都会计算;“||”运算中,当左边为true时不计算右边
//++y==1先进行y=y+1(y=2),再进行y==1(y此时为2,false)
{
//在‘|’运算中,只要1边为true,就会向下执行,所以执行x=7
x =7;
}
System.out.println("x="+x+",y="+y);
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
++在 x 的后面,所以 x 先与 1 进行比较,是true,则执行 x = 7; ++在 y 的前面,所以 y 自增 1 变为 2