What is the '-->' operator in C/C++?
Solution 1
-->
is not an operator. It is in fact two separate operators, --
and >
.
The code in the condition decrements x
, while returning x
's original (not decremented) value, and then compares the original value with 0
using the >
operator.
To better understand, the statement could be written as follows:
while( (x--) > 0 )
Solution 2
Or for something completely different... x
slides to 0
.
while (x --\
\
\
\
> 0)
printf("%d ", x);
Not so mathematical, but... every picture paints a thousand words...
Solution 3
That's a very complicated operator, so even ISO/IEC JTC1 (Joint Technical Committee 1) placed its description in two different parts of the C++ Standard.
Joking aside, they are two different operators: --
and >
described respectively in §5.2.6/2 and §5.9 of the C++03 Standard.
Solution 4
x
can go to zero even faster in the opposite direction in C++:
int x = 10;
while( 0 <---- x ) { printf(“%d ”, x); }
8 6 4 2
You can control speed with an arrow!
int x = 100;
while( 0 <-------------------- x ) { printf(“%d ”, x); }
90 80 70 60 50 40 30 20 10
Solution 5
It's equivalent to
while (x-- > 0)
x--
(post decrement) is equivalent to x = x-1
(but returning the original value of x
), so the code transforms to:
while(x > 0) {
x = x-1;
// logic
}
x--; // The post decrement done when x <= 0