[...]

So this code could be:

Code:

```
z = z + 1;
if( z <= y) {
y = y-1;
...
} else {
y = y-1;
}
```

So If z is less than y before it gets to this block, the if portion will be executed, otherwise the else part will be executed. I also think Cromulent meant "If 1 + z is less than or equal to y - 1 then", but because of the silly pre-increment and post-drecrement here this was a little off.

One additional note about casting any integer type to a floating point type (float, double, long double)... the cast will result in truncation of the decimal portion, NOT rounding. This can be a sticky point. There are standard functions to round floats and doubles, but it's trivial to come up with a way to do so yourself. These are not fit for round-to-even applications, etc. (.5 rounds away from 0, so up for positives, down for negatives).

-Lee

One more edit:

By the time that print statements in the block above run, the value of y has changed. This means you could have some weird results. In this case the values are fixed, but in the general case if z were to be 1 before the block, and y were to be 2, things would go like this:

Increment z to 2

If z is less than or equal to y (it is, they are both 2)

then, decrement y, then print: "Z: 2 <= Y: 1".

Which is, clearly, nonsense.