社区
Java SE
帖子详情
一个奇怪的结果?怎么解释这段代码
HZ1918
2007-04-04 05:15:45
int x = 1984;
int y = 2001;
x ^= y ^= x ^= y;
System.out.println("x = " + x + "; y = " + y);
...全文
756
26
打赏
收藏
一个奇怪的结果?怎么解释这段代码
int x = 1984; int y = 2001; x ^= y ^= x ^= y; System.out.println("x = " + x + "; y = " + y);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fjwns
2007-04-05
打赏
举报
回复
输出的结果是x=0,y=1984 ,想不通?
fengniumaxi
2007-04-05
打赏
举报
回复
x=x^y;
y=x^y;
x=x^y;
x=x^y^x^y;
y=x^y^y;
所以最后运算结果是x=0,y=x(这的x是初始x值)=1984
一句话 这个运算是从右向左的
HZ1918
2007-04-05
打赏
举报
回复
x^=y^=x^=y;
这个在c和java中表现不是一样的
malligator
2007-04-05
打赏
举报
回复
x ^= y;
y ^= x;
x ^= y;
迷眼流金
2007-04-05
打赏
举报
回复
这样写……
Happybolin1030
2007-04-05
打赏
举报
回复
先将x,y转化为二进制数,然后从x ^= y ^= x ^= y从右向左依次按0^0 = 0
0^1 = 1,1^1 = 0,1^0 = 1公式进行计算,最后的到x=0,y=1984的结果
pcno1
2007-04-05
打赏
举报
回复
学习
Summmmer
2007-04-05
打赏
举报
回复
这种代码没有一丝一毫的好处,可读性极差,有什么意义呢???走火入魔了。。。
李黄河
2007-04-05
打赏
举报
回复
#include <stdio.h>
main()
{
int x = 255;
int y = 0;
x^=y^=x^=y;
printf("x=%d,y=%d\n",x,y);
}
-------------
测度正确。
李黄河
2007-04-05
打赏
举报
回复
int x = 1984;
int y = 2001;
x ^= y ^= x ^= y;
System.out.println("x = " + x + "; y = " + y);
------------------------------------
a=x^y;
b=y^a;
c=a^b;
代入:
y=y^x^y=x;
x=x^y^y^x^y=y;
------------------------------------
结论:互换x,y;
For_suzhen
2007-04-04
打赏
举报
回复
看了一下,应该是2楼说得异或.相同的都为0
0^0 = 0
0^1 = 1
1^1 = 0
1^0 = 1
For_suzhen
2007-04-04
打赏
举报
回复
逻辑或,非0即1
=================
非0即1?那是肯定的了
=========================
学习学习
lixiaoxue85
2007-04-04
打赏
举报
回复
x ^= y ^= x ^= y;
逻辑或,非0即1
HZ1918
2007-04-04
打赏
举报
回复
这个不是c语言是java板块的,你怎么把这些搞到的?
binny
2007-04-04
打赏
举报
回复
Code:
0: sipush 1984
3: istore_1
4: sipush 2001
7: istore_2
8: iload_1
9: iload_2
10: iload_1
11: iload_2
12: ixor
13: dup
14: istore_1
15: ixor
16: dup
17: istore_2
18: ixor
19: istore_1
HZ1918
2007-04-04
打赏
举报
回复
不要误导
x=x^y;
y=x^y;
x=x^y;
《=/=》
x^=y^=x^=y;
「已注销」
2007-04-04
打赏
举报
回复
x=x^y;
y=x^y;
x=x^y;
VS
x^=y^=x^=y;
HZ1918
2007-04-04
打赏
举报
回复
哦知道了,首先后面的y=x,然后x=x^y,其实就是x=x^x
HZ1918
2007-04-04
打赏
举报
回复
x ^= y ^= x ^= y;--> x = x ^ (y = y ^ (x = x ^ y));
x为什么为0?
HZ1918
2007-04-04
打赏
举报
回复
蛮厉害的
加载更多回复(6)
一段
奇怪
的
代码
:
http://www.shiyanbar.com/ctf/34 一段
奇怪
的
代码
: 哎!怎么出题的,都提示到家门口了 Tips asp, encode ...#@~^EQAAAA==VXlj4UmkaYAUmKN3bAYAAA==^#~@ ...
这段
代码
解密之后就是key 解
c语言程序编译结果不一样,同一段
代码
,不同C编译器,输出结果真的会不同啊!!!...
一个
奇怪
的问题啊。写了这么久
代码
,总认为,只要是C编译器,同一段
代码
总会有相同运行结果的(不考虑随机以及多线程的情况)。但是,今天在百度知道上看到了一段
代码
,运行结果不同,本来打算直接说——小子,机器出...
同一段
代码
,不同C编译器,输出结果真的会不同啊!!!
一个
奇怪
的问题啊。 写了这么久
代码
,总认为,只要是C编译器,同一段
代码
总会有相同运行结果的(不考虑随机以及多线程的情况)。 但是,今天在百度知道上看到了一段
代码
,运行结果不同,本来打算直接说——小子,...
汇编语言:实验8分析
一个
奇怪
的程序
实验介绍实验8 分析
一个
奇怪
的程序分析下面的程序,在运行前思考:这个程序可以正确返回吗?运行后再思考:为什么是这种结果?实验
代码
;实验8 分析
一个
奇怪
的程序 ;分析下面的程序,在运行前思考:这个程序可以正确...
语法分析与中间
代码
生成
这章和上一章(属性文法和语法制导翻译)是紧密联系的,共同完成了编译过程的第三步——语义分析与中间
代码
产生。...语义分析就上升到概念层了,我以C语言举个例子:使用
一个
变量之前必须对这个
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章