黑马程序员技术交流社区

标题: 看个小程序,求大神解释 [打印本页]

作者: wawsc5354524    时间: 2014-8-9 01:07
标题: 看个小程序,求大神解释
int x = 1,y = 1;

if(x++==1 | ++y==1)
{
        x =7;
}
System.out.println("x="+x+",y="+y);



x是7,我知道,可是Y=2是怎么弄的?不好意思,那一节没有听懂,唉
作者: wawsc5354524    时间: 2014-8-9 01:09
请给我详细讲解一下“|”的使用方法吧...么么哒
作者: 地狱天堂    时间: 2014-8-9 03:47
“|”单或时,无论左边的运算结果是什么,右边都参与运算。所以++y自增了1,y=2。
“||”双或时,当左边为true时,右边不参与运算。如果改为"||",那么结果是y=1。
作者: Joemi    时间: 2014-8-9 06:05
++y是先自增再赋值
作者: 冒牌高手    时间: 2014-8-9 08:29
if条件语句中的两条语句都执行了,++y就相当于y=y+1,所以y的结果是2了....你要是将逻辑运算符改成||的话,y就等于1了
作者: Ezreal    时间: 2014-8-9 09:17
楼上都说清楚了
作者: 菜鸟一号    时间: 2014-8-9 09:32
@地狱天堂说的是正解
作者: zhxu188    时间: 2014-8-9 10:20
3L正解,学习了
作者: kakasa    时间: 2014-8-9 21:58
3L正解

还有&&,左边如果是false,右边也不会继续判断运算了

怎么这么多人被禁言,。
作者: wawsc5354524    时间: 2014-8-9 22:12
kakasa 发表于 2014-8-9 21:58
3L正解

还有&&,左边如果是false,右边也不会继续判断运算了

这个我知道短路现象
作者: wawsc5354524    时间: 2014-8-9 22:13
地狱天堂 发表于 2014-8-9 03:47
“|”单或时,无论左边的运算结果是什么,右边都参与运算。所以++y自增了1,y=2。
“||”双或时,当左边 ...

哦,原来是|的时候无论左边是否短路右边都会运算啊,谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2