I can't understand what the following code is doing on s:
s
if(!s--)
s is an int
int
! is called negation operator. It is a logical operator.
!
negation
See the wikipedia entry here.
The order in which it executes
0
if
Actually, it's misleading.
You are testing is s is different from 0 (with if (!s)). And then, afterward, whatever the result is, you're decreasing it.
if (!s)
So, it's two different operations. It could be written this way :
if (!s) { s--; //... } else { s--; }
!
is callednegation
operator. It is a logical operator.See the wikipedia entry here.
The order in which it executes
s
is0
or not , ifs
is0
,if
condition is success [thanks to the!
operator], otherwise, failure.s
by one unit.if
condition, continue the execution [code underif
condition, or next block of code].