假设我有一个数组a [],如果我想改变a [i]的值并将其改为零,我可以使用像temp这样的临时变量来实现。
int temp = a[i];
a[i] = 0;
但我遇到了与此类似的代码
int temp = a[i] | (a[i] = 0);
我很难理解这一点。请解释它有效吗?使用类似类型的代码是一个好习惯吗?
答案 0 :(得分:7)
直接代码的目的是从数组中获取值并将其在数组中的位置设置为0
。
让我们看看棘手的代码是如何做到的。
|
运算符是按位运算符。首先,评估a[i]
,无论左边的操作数是什么值。接下来,括号将强制a[i] = 0
进行评估。这会将数组元素设置为0
,而|
的右操作数现在为0
。按位或使用值0
执行不会更改其他值。 temp =
右侧的整个表达式的值是a[i]
的原始值。这样就可以在一个声明中完成简单代码所做的一切。
这段代码很棘手,这不是好习惯,因为它令人困惑。我永远不会使用这种技术。