java puzzler - Swap Meat
来源:互联网 发布:java等级划分英语缩写 编辑:程序博客网 时间:2024/05/18 17:28
x ^= y ^= x ^= y 试图实现两个变量交换值,避开中间变量。
x ^= y ^= x ^= y在C和C++中大多数情况下能够实现值交换,但是也不能保证必定成功。
可以肯定的是这个表达式在JAVA中不能实现值交换:
JAVA 中x ^= y ^= x ^= y 的实际行为:
int tmp1 = x; // First appearance of x in the expression
int tmp2 = y; // First appearance of y
int tmp3 = x ^ y; // Compute x ^ y
x = tmp3; // Last assignment: Store x ^ y in x
y = tmp2 ^ tmp3; // 2nd assignment: Store original x value in y
x = tmp1 ^ y; // First assignment: Store 0 in x
可以使用下面方式实现:
y = (x ^= (y ^= x)) ^ y;
但是不鼓励使用这种类型的表达式,因为可能会使用到更多的中间变量,降低运行速率,与节约时间和空间的初衷背道而驰。
- java puzzler - Swap Meat
- Java Puzzlers笔记--puzzle 7: Swap Meat ^符号问题
- Java Puzzler 6 库
- java puzzler - URL
- Java 解惑(Java Puzzler)
- Java 解惑(Java Puzzler)
- Java 解惑(Java Puzzler)
- Java 解惑(Java Puzzler)
- java puzzler - 三目运算
- Puzzler: Nested computeIfAbsent -Java 8
- Java Puzzler-44 Cutting Class,为什么我没有 NoClassDefFoundError?
- java swap
- Swap.java
- <meat>元素
- 【Java】Java中的swap
- Anonymous class puzzler习题
- java之swap
- Java Swap函数
- java puzzler - 三目运算
- 个v
- C#获得本机MAC地址 - [Coding](转)
- access violation at address 00000000.read of address 00000000
- 如何点击OK后ProperSheet不自动关闭
- java puzzler - Swap Meat
- Flex组件开发总结
- C++ 上路笔记
- ShellExecute, WinExec, CreateProcess
- 接口 vs 抽象类
- CoInitialize与CoInitializeEx,AfxOleInit()的不同 控制台程序中AfxOleInit失效原因
- Flex 网站大全【持续更新】
- 实现wince datagrid 上下滑屏数据浏览
- oracle utl_file包的使用