什么是
=+运算符?
那是两个运算符,一个是赋值运算符,
=一个是一元加号
+,它什么都不做。
您是否输入错了并表示compund赋值运算符
+=?
什么是
+++运算符?
还有两个运算符,一个为后递增,
++一个为加法
+(根据最大划分规则,选择了最长的有效令牌,如果选择了最短的有效令牌,它将成为一个加法和两个一元加法)。
什么是
- -运算符?
再一次是两个运算符,一个减法,一个一元负数(负)。
什么是
|=运算符?
一个复合赋值,
boolean对左侧的值与右侧的值进行按位或[如果是值,则对它们进行逻辑或],并将其存储在左侧的变量中。
a |= b;
几乎等于
a = a | b;
但是左侧操作数仅计算一次,而后者可能需要显式转换,而前者则不需要。
k = (j = (i = 0) + 2) + 1;return i|= j|= k|= (j+= i) - - (k+++k) - - (i =+j);
它的值为11。这是如何工作的?
第一行相当于
i = 0;j = i+2;k = j+1;
赋值(
i = 0例如)计算为存储的值(在
i此)。
下一行是,具有适当的间距,并添加了隐式括号
return i |= (j |= (k |= (((j += i) - (-(k++ + k))) - (-(i = +j)))));
i |= stuff_1
:i
被评估(0),stuff_1
被评估,按位或被取,结果存储在中i
。由于i
本来是0,所以等效于i = stuff_1
。j |= stuff_2
:j
对(2)stuff_2
求值,按位或求值,并将结果存储在中j
。k |= stuff_3
:k
被评估(3),然后stuff_3
从左到右。(j += i)
添加i
到j
,将和存储在中j
并返回j
的新值。由于i
为0,因此j
不会更改,值为2。(k++ + k)
接受k
(3)的旧值,增加k
并加上k
新的值(4),得到7。该值被取反,并且从2中减去该取反的值(-7),得到2 - (-7) = 9
。(i = +j)
将j
(2)的值存储在中,i
并且表达式的值也为2。该值被取反(-2)并从先前操作中得到的9中减去,因此stuff_3
求值为11,其副作用是i
现在的存储值为2- 的存储值
j
现在为2(实际上没有更改,因为i
最初为0) k
现在的存储值为4k
(3)的旧值按11进行位或运算,得到11,该值存储在中k
,而11是的值stuff_2
,即k |= stuff_3
。j
(2)的旧值按位或与stuff_2
(11)的值相加,结果为11。该值存储在中j
,stuff_1
(j |= stuff_2
)的值为11。
i
(0)的旧值按位或与stuff_1
(11)i
的值相加,结果在中排序,然后值为i |= stuff_1
11。然后返回该值。



