第一题
int x = 1,y=1;
if(x++==2 & ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);//x=2,y=2
---------------------------------------------------
第二题
int x = 1,y = 1;
if(x++==2 && ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);x=2,y=1
---------------------------------------------------
第三题
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=1
---------------------------------------------------
第五题
boolean b = true;
if(b=false) //如果写成if(b=false)有结果吗?如果有,结果是?
System.out.println("a");
else if(b)
System.out.println("b");
else if(!b)
System.out.println("c");
else
System.out.println("d");
//b
if(b=false)
//c
---------------------------------------------------
第六题
int x = 2,y=3;
switch(x)
{
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);//y=6
i++和++i的区别,百度
这个我懂!就是不明白怎么x++==2 && ++y==2 ,y怎么等于1了?
@s h: 因为只要x++==2是false了那么不管后面是什么结果都是false,所以程序就不会再往后执行了,既然后面没有执行,y自然也就没有+1啊
@Meen: x++==2 ,x=1? 如果是1,那第一个怎么说x=2?还有第二个?
@s h: 不管前++还是后++最终都是要+1的就看计算的时候是+1之前的还是+1之后的.
@s h: ++x,代表运算的时候就把1给加进去,而x++则是在运算完成之后,才把1加进去。所以在两个之间的不同只在于运算之时,在运算之后,结果都是相同的。
如果开始的时候x=2,那x++==2是true,程序就会继续执行后面的,y就会改变
我比较讨厌这样的题的,其实真正写代码的时候加上括号不就行了,记这些有两个问题:1,不好记住;2,万一记错了岂不是糟糕。
i++ 与 ++i的区别:++在前先加一,再比较;++在后先比较后加一
& 于 &&:&是符号前后都比较。&&是如果符号前卫false则后面部比较
| 于 ||:同上
同上
X++是先参与其他运算后自加,而++X是先自加后参与其他运算
int x = 1,y = 1;
if(x++==1 || ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);//x=7,y=1
这个y不应该是等于2吗?难道y没参与运算?
@s h: ||是短路或运算,前面是true后面就不需要运行了,所有++y么有运行.
@s h: if(x++==0|| ++y==1){} ,(前提是(||)表过式)如果第一个表达式成立,则不会执行第二个表达式,如果第一个表达式不成立,则会执行第二个表达式,在这并没有执行++y==1判断,所以y也没有进行自加。因此y=1.
@s h: if(x++==0|| ++y==1){} ,(前提是(||)表过式)如果第一个表达式成立,则不会执行第二个表达式,如果第一个表达式不成立,则会执行第二个表达式,在这并没有执行++y==1判断,所以y也没有进行自加。因此y=1.(正如你所言)
说实话这题挺烦人,但是编程的乐趣有时也就在这里,意外。考察运算符,还有不要粗心大意了