简评:不瞒你说,我现在数数都是从 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

原文链接:
Why is x == (x = y) not the same as (x = y) == x?​stackoverflow.com

转载于:https://www.cnblogs.com/jpush88/p/11205646.html

x == (x = y) 不等于 (x = y) == x ?相关推荐

  1. 下面程序段的运行结果是: for(y=1;y<10;) y=((x=3*y,x+1),x-1); printf(“x=%d,y=%d“,x,y); A)x=27,y=27 B)x=12,y=

    下面程序段的运行结果是: for(y=1;y<10;) y=((x=3*y,x+1),x-1); printf("x=%d,y=%d",x,y); A)x=27,y=27 B ...

  2. R语言ggplot2可视化:将条形图(bar plot)和线图(line plot)组合在一起并使用双Y轴(double y axis)进行可视化、其中一个Y轴显示为百分比

    R语言ggplot2可视化:将条形图(bar plot)和线图(line plot)组合在一起并使用双Y轴(double y axis)进行可视化.其中一个Y轴显示为百分比 目录

  3. python输出print(x+y)_Python语句序列“x='car';y=2; print(x+y)”的输出结果是_学小易找答案...

    [单选题]下列标识符中,合法的是( ). [填空题]若 a=10 ,那么 bin(a) 的值为 __________ . [单选题]如果在 Python 程序中没有导人相关的模块 ( 例如 impor ...

  4. python中x y表示_Python中表达式x += y和x = x+y 的区别详解

    前言 本文主要给大家介绍的是关于Python中表达式x += y和x = x+y 区别的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 直接看下面代码: x +=y In [66]: id( ...

  5. [再寄小读者之数学篇](2014-11-19 $\sin(x+y)=\sin x\cos y+\cos x\sin y$)

    $$\bex \sin(x+y)=\sin x\cos y+\cos x\sin y. \eex$$ Ref. [Proof Without Words: Sine Sum Identity, The ...

  6. python中x y 1_Python的X[y==1, 0]

    最近研究逻辑回归,Iris花的经典示例,代码就不全粘贴了,具体代码参看"Iris花逻辑回归与实现" 1 plt.plot(X[y==0, 0], X[y==0,1], " ...

  7. python输出print(x+y)_Python语句序列“x='car';y=2;print(x+y)”的输出结果是() (2.0分)_学小易找答案...

    [单选题]关于Python字符串,下列说法错误的是() (2.0分) [单选题]Python语句序列"x='car';y=2;print(x+y)"的输出结果是() (2.0分) ...

  8. x+=y与x=x+y有什么区别?

    一般情况下,x+=y与x=x+y输出结果是等价的,因此两种写法是可以通用的,但是在某些临界值选用x+=y更加合适,比如: short n=3; n+=1;//编译通过 n=n+1;//编译失败 上述例 ...

  9. c语言用pow求x的y次幂,使用系统函数pow(x,y)计算x的y次方的值,注意包含头文件math.h...

    #include //c语言 #include int main() { double m,x,y; printf("请输入两个数:"); scanf ("%d %d&q ...

最新文章

  1. redis3.0.0 集群安装详细步骤
  2. 用dotTace模仿下老赵的“使用Profiler分析程序性能”
  3. netcore中使用grpc
  4. 【重大更新】DevExpress v17.1新版亮点(ASP.NET篇)
  5. TradingView 初识
  6. Cassandra1.2文档学习(12)—— hint机制
  7. docker Gitlab14.5.0 安装、配置、部署、使用
  8. 二叉树知识点最详细最全讲解
  9. DT CMS致力于Spring Boot2.3.5 Vue前后端分离的RBAC权限框架(盛世美颜!)
  10. nginx出现 500 Internal Server Error的解决办法
  11. K8S_Google工作笔记0010---通过二进制方式_生成SSL证书文件
  12. FFMpeg写MP4文件例子分析
  13. HDU 6390 GuGuFishtion(莫比乌斯反演 + 欧拉函数性质 + 积性函数)题解
  14. 锐捷长ping_【路由】交换卡下的客户端无法ping通网关
  15. 数据分析必备软件Excel安装包+激活工具
  16. winRar禁止弹窗广告方法
  17. android 4.4 root精灵,ROOT精灵: 支持安卓4.3/4.4机型一键ROOT
  18. linux移动文件的命令是什么,linux移动文件命令
  19. hadoop day02
  20. 微分的概念和微分的基本公式与运算法则

热门文章

  1. CV Code | 本周新出计算机视觉开源代码汇总(含自动驾驶目标检测、医学图像分割、风格迁移、语义分割、目标跟踪等)...
  2. 提升Python程序性能的7个习惯
  3. 墨子科技成果是计算机,祖国强起来!为2017年这些重大科技成果打call
  4. 收藏 | 图解 Git 工作原理
  5. CVPR2021 Oral|只用静态图,实时渲染出丝滑3D效果
  6. 阿里公开自研AI集群细节:64个GPU,百万分类训练速度提升4倍
  7. 笔记 | 《机器学习》手推笔记更新集成学习(Boosting和随机森林)
  8. 译文 | 与TensorFlow的第一次接触第二篇:线性回归
  9. java软件架构设计方案_Java软件架构设计慨论
  10. 使用google map实现周边搜索的功能_「转」“搜索”的原理,架构,实现,实践,面试不用再怕了...