首页 新闻 会员 周边

解释一下吧!有点小不懂?

0
[待解决问题]

第一题

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

s h的主页 s h | 菜鸟二级 | 园豆:207
提问于:2013-05-06 15:17
< >
分享
所有回答(6)
0

i++和++i的区别,百度

twistting | 园豆:575 (小虾三级) | 2013-05-06 15:31

这个我懂!就是不明白怎么x++==2 && ++y==2  ,y怎么等于1了?

支持(0) 反对(0) s h | 园豆:207 (菜鸟二级) | 2013-05-06 15:37

@s h: 因为只要x++==2是false了那么不管后面是什么结果都是false,所以程序就不会再往后执行了,既然后面没有执行,y自然也就没有+1啊

支持(0) 反对(0) Meen | 园豆:321 (菜鸟二级) | 2013-05-06 15:48

@Meen: x++==2  ,x=1? 如果是1,那第一个怎么说x=2?还有第二个?

支持(0) 反对(0) s h | 园豆:207 (菜鸟二级) | 2013-05-06 23:09

@s h: 不管前++还是后++最终都是要+1的就看计算的时候是+1之前的还是+1之后的.

支持(0) 反对(0) 小草房Jason | 园豆:194 (初学一级) | 2013-05-09 10:15

@s h: ++x,代表运算的时候就把1给加进去,而x++则是在运算完成之后,才把1加进去。所以在两个之间的不同只在于运算之时,在运算之后,结果都是相同的。

支持(0) 反对(0) Marcos.W | 园豆:230 (菜鸟二级) | 2013-06-19 23:14
0

如果开始的时候x=2,那x++==2是true,程序就会继续执行后面的,y就会改变

Meen | 园豆:321 (菜鸟二级) | 2013-05-06 15:50
0

我比较讨厌这样的题的,其实真正写代码的时候加上括号不就行了,记这些有两个问题:1,不好记住;2,万一记错了岂不是糟糕。

会长 | 园豆:12401 (专家六级) | 2013-05-06 16:37
0

i++ 与 ++i的区别:++在前先加一,再比较;++在后先比较后加一

& 于 &&:&是符号前后都比较。&&是如果符号前卫false则后面部比较

| 于 ||:同上

三级菜鸟 | 园豆:218 (菜鸟二级) | 2013-05-06 17:20

同上

支持(0) 反对(0) twistting | 园豆:575 (小虾三级) | 2013-05-07 08:16
0

X++是先参与其他运算后自加,而++X是先自加后参与其他运算

面对阳光努力向上 | 园豆:179 (初学一级) | 2013-05-08 13:35

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没参与运算?

支持(0) 反对(0) s h | 园豆:207 (菜鸟二级) | 2013-05-08 21:58

@s h: ||是短路或运算,前面是true后面就不需要运行了,所有++y么有运行.

支持(0) 反对(0) 小草房Jason | 园豆:194 (初学一级) | 2013-05-09 10:17

@s h: if(x++==0|| ++y==1){} ,(前提是(||)表过式)如果第一个表达式成立,则不会执行第二个表达式,如果第一个表达式不成立,则会执行第二个表达式,在这并没有执行++y==1判断,所以y也没有进行自加。因此y=1.

支持(0) 反对(0) 面对阳光努力向上 | 园豆:179 (初学一级) | 2013-05-17 17:27

@s h: if(x++==0|| ++y==1){} ,(前提是(||)表过式)如果第一个表达式成立,则不会执行第二个表达式,如果第一个表达式不成立,则会执行第二个表达式,在这并没有执行++y==1判断,所以y也没有进行自加。因此y=1.(正如你所言)

支持(0) 反对(0) 面对阳光努力向上 | 园豆:179 (初学一级) | 2013-05-17 17:29
0

说实话这题挺烦人,但是编程的乐趣有时也就在这里,意外。考察运算符,还有不要粗心大意了

苍老的鱼 | 园豆:202 (菜鸟二级) | 2014-02-21 16:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册