Actually, “- – >” is not an operator, but this is combination of two separate operators, “- -” and “>” .
So, if you write it as
#include <stdio.h> int main() { int x = 10; while (x - -> 0) { printf("%d ", x); } }
It will print following output,
9 8 7 6 5 4 3 2 1 0
Because conditional’s code decrements x,
while (x- - > 0)
Statement could be written as follows:
while( (x- -) > 0 )
x- – (post decrement) is equivalent to x = x-1.
So, code is same as:
while(x > 0) { x = x-1; // logic } // post decrement done when x <= 0 x- -;
Same as,
while (x- -) { printf("%d ", x); }
For non-negative numbers.
Hence, these are two different operators: - - and > described respectively in §5.2.6/2 and §5.9 of the C++03 Standard. Decrement operation is faster than incrementing on the x86 architecture.
Please write comments if you find anything incorrect. A gentle request to share this topic on your social media profile.