求助大神 关于位运算和逻辑运算

11小零童 2017-09-20 11:10:33

public class test5 {
public static void main(String[]args) {
int x = 4,y=6,z=8;
boolean u=false;
u=!( (x >= --y || y++ < z-- )&& y == z );
System.out.println("u="+u);

y=6;
u=!((x>=--y|y++<z--)&y==z);
System.out.println("u="+u);
为什么结果是u=true
u=false
...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
逗比123号 2017-09-20
  • 打赏
  • 举报
回复
对boolean类型来讲结果一样,只是||,&&是短路操作
yingZhen_feng 2017-09-20
  • 打赏
  • 举报
回复
(x >= --y || y++ < z-- ) (x>=5 || 5<8) 这个是false, ( y == z) (6==7) 这个也是false 所以( (x >= --y || y++ < z-- )&& y == z )) 这个是false u=!( (x >= --y || y++ < z-- )&& y == z ); u=!false 所以最后u是true,解决了第一个问题。 至于第二个问题,我相信你可以自己解决。
Freefish1994 2017-09-20
  • 打赏
  • 举报
回复
y++是先比较,比较以后再加一 ++y是先加一,加一以后再比较
never_66 2017-09-20
  • 打赏
  • 举报
回复
public class test5 { public static void main(String[]args) { int x = 4,y=6,z=8; boolean u=false; //此时x=4>y=5,为false,继续走第二个条件, y=5<z=8,为true, 走短路与 5 == 7 为false 最终结果为false,由于取反,所以u=true; u=!( (x >= --y || y++ < z-- )&& y == z ); System.out.println("u="+u); y=6; //此时x=4>=y=5 false y=5<z=7 true 结果为true y =6 == z=6 true 双true 结果为true 由于取反,所以u=false; u=!((x>=--y|y++<z--)&y==z); System.out.println("u="+u);

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧