The repetition of a unary operator is usually a typo. The second operator invalidates the first one in most cases:
int i = 1;
int j = - - -i; // Noncompliant: equivalent to "-i"
int k = ~~~i; // Noncompliant: equivalent to "~i"
int m = + +i; // Noncompliant: equivalent to "i"
boolean b = false;
boolean c = !!!b; // Noncompliant
On the other hand, while repeating the increment and decrement operators is technically correct, it obfuscates the meaning:
int i = 1;
int j = ++ ++i; // Noncompliant
int k = i-- --; // Noncompliant
Using +=
or -=
improves readability:
int i = 1;
i += 2;
int j = i;
int k = i;
i -=2;
This rule raises an issue for repetitions of !
, ~
, -
, +
, prefix increments ++
and
prefix decrements --
.
Exceptions
Overflow handling for GWT compilation using ~~
is ignored.