mc2*_*c20 3 java arrays boolean-logic
假设我有一个数组a [],如果我想改变a [i]的值并将其改为零,我可以通过使用temp变量来实现.
int temp = a[i];
a[i] = 0;
Run Code Online (Sandbox Code Playgroud)
但我遇到了类似的代码
int temp = a[i] | (a[i] = 0);
Run Code Online (Sandbox Code Playgroud)
我很难理解这一点.请解释它有效吗?使用类似类型的代码是一个好习惯吗?
直接代码的目的是从数组中获取值并将其在数组中的位置设置为0.
让我们看看棘手的代码是如何做到的.
该|操作是按位或操作.首先,a[i]进行评估,无论左边的操作数是什么值.接下来,括号强制a[i] = 0进行评估.这将数组元素设置为0和|现在的右操作数0.按位或按值0执行不会更改其他值.右边的整个表达式的值temp =是原始值a[i].在一个语句中,这具有完成简单代码所做的一切的效果.
这段代码很棘手,这不是好习惯,因为它令人困惑.我永远不会使用这种技术.