Questions tagged «compound-assignment»


7
Javascript三元运算符的运算符优先级
我似乎无法与三元运算符结合使用此代码的第一部分(+ =)。 h.className += h.className ? ' error' : 'error' 我认为这段代码的工作方式如下: h.className = h.className + h.className ? ' error' : 'error' 但这是不正确的,因为这会导致控制台出现错误。 所以我的问题是我应该如何正确插入此代码?

8
Java中的快捷方式“或分配”(| =)运算符
我在Java中有很长的比较需要做,我想知道其中是否有一个或多个是正确的。比较字符串很长且难以阅读,因此为了便于阅读,我对其进行了分解,并自动使用快捷方式运算符|=而不是negativeValue = negativeValue || boolean。 boolean negativeValue = false; negativeValue |= (defaultStock < 0); negativeValue |= (defaultWholesale < 0); negativeValue |= (defaultRetail < 0); negativeValue |= (defaultDelivery < 0); negativeValue如果任何默认<something>值为负,我希望是真实的。这有效吗?会满足我的期望吗?我在Sun的网站或stackoverflow上看不到它,但是Eclipse似乎没有问题,并且代码可以编译并运行。 同样,如果我想执行多个逻辑交集,是否可以使用&=代替&&?

7
在“ k + = c + = k + = c;”中对内联运算符有解释吗?
以下操作的结果如何解释? k += c += k += c; 我试图理解以下代码的输出结果: int k = 10; int c = 30; k += c += k += c; //k=80 instead of 110 //c=70 目前,我正在努力理解为什么“ k”的结果为80。为什么分配k = 40无效(实际上Visual Studio告诉我该值未在其他地方使用)? 为什么k为80,而不是110? 如果我将操作拆分为: k+=c; c+=k; k+=c; 结果是k = 110。 我试图浏览CIL,但我对解释生成的CIL并不了解,无法获得一些细节: // [11 13 - 11 24] IL_0001: …

12
Java为什么没有条件和和条件或运算符的复合赋值版本?(&& =,|| =)
因此,对于在布尔二元运算符,Java有&,|,^,&&和||。 让我们在这里简要总结一下他们的工作: JLS 15.22.2布尔逻辑运算符&,^和| JLS 15.23条件与运算符&& JLS 15.24条件或运算符|| 对于&,结果值是true两个操作数都为true; 否则,结果为false。 对于|,结果值是false两个操作数都为false; 否则,结果为true。 对于^,结果值是true操作数值是否不同;否则,结果为false。 该&&操作是一样&,但是评估其右边的操作数只有在其左侧的值操作数true。 该||操作是一样|的,但评估其右边的操作数只有在其左侧的值操作数false。 现在,所有5间,那些3有复合赋值版本,分别为|=,&=和^=。所以我的问题是显而易见的:为什么不是Java提供&&=和||=呢?我发现我需要那些比我更需要&=和|=。 而且我不认为“因为它太长”是一个很好的答案,因为Java具有>>>=。一定有一个更好的理由可以忽略这一点。 从15.26分配运算符开始: 有12个赋值运算符;[...]= *= /= %= += -= <<= >>= >>>= &= ^= |= 有人评论说,如果&&=和||=被实施,那么它将是唯一不首先评估右侧的运营商。我认为,复合赋值运算符首先评估右侧的这一观点是错误的。 从15.26.2复合赋值运算符开始: 形式的复合赋值表达式E1 op= E2等效于E1 = (T)((E1) op (E2)),其中T是的类型E1,不同之处在于该表达式E1仅被评估一次。 为了证明这一点,以下代码段抛出NullPointerException,而不是ArrayIndexOutOfBoundsException。 int[] a = null; int[] b = {}; a[0] += …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.