栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么该语句在Java中不起作用x ^ = y ^ = x ^ = y;

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么该语句在Java中不起作用x ^ = y ^ = x ^ = y;

您的陈述大致相当于这种扩展形式:

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

与C语言不同,在Java中,保证二进制运算符的左操作数在右操作数之前进行求值。评估如下:

x = x ^ (y = y ^ (x = x ^ y))x = 1 ^ (y = 2 ^ (x = 1 ^ 2))x = 1 ^ (y = 2 ^ (x = 3))x = 1 ^ (y = 2 ^ 3)  // x is set to 3 x = 1 ^ (y = 1)x = 1 ^ 1 // y is set to 1x = 0     // x is set to 0

您可以反转每个xor表达式的参数顺序,以便在再次评估变量之前完成赋值:

x = (y = (x = x ^ y) ^ y) ^ xx = (y = (x = 1 ^ 2) ^ y) ^ xx = (y = (x = 3) ^ y) ^ x x = (y = 3 ^ y) ^ x  // x is set to 3x = (y = 3 ^ 2) ^ xx = (y = 1) ^ xx = 1 ^ x // y is set to 1x = 1 ^ 3x = 2     // x is set to 2

这是一个更紧凑的版本,也可以使用:

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

但这是交换两个变量的真正可怕的方法。使用临时变量是一个更好的主意。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392420.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号