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"
bool b = false;
bool c = !!!b; // Noncompliant: equivalent to "!b"
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;
i -=2;
int k = i;
This rule raises an issue for repetitions of:
-
!
, ~
, -
, and +
- the increment
++
and decrement - -
operators in C++
Exceptions
The rule ignores boolean normalization !!
.