zoukankan      html  css  js  c++  java
  • x == (x = y) 不等于 (x = y) == x ?

    简评:不瞒你说,我现在数数都是从 0 开始数的,整数是 1024。

    有这么一个 Java 程序:

    class Quirky {
        public static void main(String[] args) {
            int x = 1;
            int y = 3;
    
            System.out.println(x == (x = y)); // false
            x = 1; // reset
            System.out.println((x = y) == x); // true
         }
    }
    

    学习数学时我们学会了操作符优先原则,按照这个原则,这里的两次输出应该都是 true 才对,可为什么两次的输出结果不同呢?

    其实 Java 中 == 是一个二进制相等运算符,简单而言就是在评估 == 右边操作数的任何部分之前,二进制运算符 == 的左边的操作数已经被完全评估过了。

    //the example values
    x = 1;
    y = 3;
    

    所以第一个运算式的步骤是:

    x == (x = y)
    1 == (x = y)
    1 == (x = 3) //assign 3 to x, returns 3
    1 == 3
    false
    

    第二个运算式是:

    (x = y) == x
    (x = 3) == x //assign 3 to x, returns 3
    3 == x
    3 == 3
    true
    

    原文链接:x == (x = y) 不等于 (x = y) == x ?

  • 相关阅读:
    魔兽登录系统
    航班信息查询预订
    第六章
    嵌套.
    嵌套
    Mysql
    第二章
    Java
    HTML-表格-列表-结构标记-表单
    HTML语言
  • 原文地址:https://www.cnblogs.com/jpush88/p/10231575.html
Copyright © 2011-2022 走看看