假设我有一个数组a[],如果我想更改a[I]的值并将其更改为零,我可以通过使用临时变量来实现。
int temp = a[i];
a[i] = 0;
但是我遇到了一个类似的代码
int temp = a[i] | (a[i] = 0);
我很难理解这个。请解释一下,它有用吗?使用类似类型的代码是一个好的实践吗?
这段简单代码的目的是从数组中获取一个值,并将其在数组中的位置设置为0
。
让我们看看这些复杂的代码是如何做到的。
|
操作符是位或操作符。首先,对a[i]
求值,这里的值就是左操作数。接下来,括号强制计算a[i] = 0
。这将数组元素设置为0
,而|
的右操作数现在是0
。对值0
执行按位或操作不会改变其他值。"temp =
"后的整个表达式的值为"a[i]
"的原值。这样做的效果是在一个语句中完成了直接代码所做的一切。
这段代码很棘手,它不是一个好的实践,因为它令人困惑。我绝不会使用这种技巧。