| www.delorie.com/gnu/docs/gcc/gcc_92.html | search |
![]() Buy the book! | |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
It is very convenient to have operators which return the "minimum" or the "maximum" of two arguments. In GNU C++ (but not in GNU C),
a <? b
a >? b
These operations are not primitive in ordinary C++, since you can use a macro to return the minimum of two things in C++, as in the following example.
#define MIN(X,Y) ((X) < (Y) ? : (X) : (Y)) |
You might then use `int min = MIN (i, j);' to set min to the minimum value of variables i and j.
However, side effects in X or Y may cause unintended
behavior. For example, MIN (i++, j++) will fail, incrementing
the smaller counter twice. The GNU C typeof extension allows you
to write safe macros that avoid this kind of problem (see section 5.6 Referring to a Type with typeof).
However, writing MIN and MAX as macros also forces you to
use function-call notation for a fundamental arithmetic operation.
Using GNU C++ extensions, you can write `int min = i <? j;'
instead.
Since <? and >? are built into the compiler, they properly
handle expressions with side-effects; `int min = i++ <? j++;'
works correctly.
| webmaster donations bookstore | delorie software privacy |
| Copyright © 2003 by The Free Software Foundation | Updated Jun 2003 |