Alex Rivera | Logout

Is using increment (operator++) on floats bad?

Asked 2011-12-19T12:29:31.567
40

Is it bad to use the increment operator ++ on floats? It compiles but I find it counter-intuitive. In what cases is using ++ on float variable justified and better than += 1.0f? If there are no use cases, is there a respectable C++ style guide that explicitly says that ++ on float is evil?

For float ++ does not increment by the smallest possible value, but by 1.0. 1.0f has no special meaning (unlike integer 1). It may confuse the reader causing him to think that the variable is int. For float it is not guaranteed that operator++ changes the argument. For example the following loop is not infinite:

float i, j;
for (i=0.0, j=1.0; i!=j;i=j++);

Consequently doing ++ immediately after -- does not guarantee that the value is unchanged.

Edit
Report

2 Answers

28

In general ++/-- is not defined for floats, since it's not clear with which value the float should be incremented. So, you may have luck on one system where ++ leads to f += 1.0f but there may be situations where this is not valid. Therefore, for floats, you'll have to provide a specific value.

++/-- is defined as "increment/decrement by 1". Therefore this is applicable to floating point values. However, personally i think, that this can be confusing to someone who isn't aware of this definition (or only applies it to integers), so i would recommend using f += 1.0f.

answered 2011-12-19T12:34:45.363
9

It's bad style. ++ and -- are intended to set an lvalue to its next or previous value, like the next or previous integer, the next or previous element in an array (for pointers), the next or previous element in a container (iterators), etc.

Next and previous values are not well-defined for floats. Do f += 1. explicitly.

answered 2011-12-19T12:36:04.960

Your Answer