博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
x == (x = y) 不等于 (x = y) == x ?
阅读量:5898 次
发布时间:2019-06-19

本文共 667 字,大约阅读时间需要 2 分钟。

hot3.png

简评:不瞒你说,我现在数数都是从 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 valuesx = 1;y = 3;

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

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

第二个运算式是:

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

原文链接:

转载于:https://my.oschina.net/jpushtech/blog/2998126

你可能感兴趣的文章
React生命周期详解
查看>>
读MBProgressHUD
查看>>
tomcat源码分析(第四篇 tomcat请求处理原理解析--Container源码分析)
查看>>
使用element-ui的el-tree组件入坑讲解之setCheckedKeys
查看>>
jsonp跨域资源引起CORB
查看>>
react性能优化
查看>>
Matlab随笔之插值与拟合(上)
查看>>
[JavaScript]12 Amazing and Creative Javascript Games
查看>>
WebHelper-SessionHelper、CookieHelper、CacheHelper、Tree
查看>>
Windows魔法堂:解决“由于启动计算机时出现页面文件配置问题.......”
查看>>
解决linux删除文件后空间没有释放问题
查看>>
securecrt中文乱码以及ubuntu设置locale
查看>>
Android API 中文(13) —— ToggleButton
查看>>
说说IUnitOfWork~DbContext对象的创建应该向BLL层公开
查看>>
can't set android permissions - built without android support
查看>>
php内核分析(四)-do_cli
查看>>
回《笔试常见的“阶乘”编程题,你写对了么?》
查看>>
ExtJS中TreePanel的使用
查看>>
[Erlang 0055] Erlang Shared Data using mochiglobal
查看>>
百度兴趣点下载工具设计和实现
查看>>