zoukankan      html  css  js  c++  java
  • java中的陷阱,看看你掉进去了么! 我自己的理解。

    2、浮点数想减

    System.out.println(2.0-1.9);  
    System.out.println(2.0-1.9); 

    上面会打印0.1么?

    这个不明白,求指点。

    3、交换

    int x = 2010; 
    int y = 2012; 
    x^=y^=x^=y;
    System.out.println("x= " + x + "; y= " + y);

    x、y的值互换了么?

    自己试了下,y的成功换成了2010,x则变成了0,

    按照我的理解,

     

    x^=y^=x^=y;

    这一行应该是转换成这样子运行的:

    x = x^y;

    y = y^x;

    x = x^y;

    事实也证明上述三行代码能成功互换 x 和 y 的值。但是为什么不行呢?

    最后我把它转换成了这样子:

     

    x = x^(y = y^(x = x^y));

     

    这样好像容易理解为什么 x 是 0。

    x = x^y 的内容应该是没有来得及改变 x = x^(...)  里面第二个 x 的内容,也就是说仍然是其初始值2010。

    而括号里面的内容也就是 y 的值被修改成了 x 的值 2012。

    于是,最后变成了 x = 2012 ^ 2012。当然 x 的值是  0。

    但是为什么括号里面对 x 的重新赋值没有影响到,括号外面的 x 的值呢?

    仅仅是因为这是一个位运算?

    求大师指点。

     




     

  • 相关阅读:
    Vulnhub_DC4 记录
    文件上传(解析)漏洞
    开源情报搜集
    Vulnhub_DC3 记录
    “恶意”利用IPC$
    Vulnhub_DC2 记录
    Vulnhub_DC1 记录
    合天网安实验室 渗透测试项目二
    合天网安实验室 渗透测试项目一
    编程如写作
  • 原文地址:https://www.cnblogs.com/lanfengniao/p/3061125.html
Copyright © 2011-2022 走看看