Copyright (C) 2000-2012 |
GNU Info (gcc-295.info)Min and MaxMinimum and Maximum Operators in C++ ==================================== 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' is the "minimum", returning the smaller of the numeric values A and B; `A >? B' is the "maximum", returning the larger of the numeric values A and 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. A GNU C extension allows you to write safe macros that avoid this kind of problem (Note: Naming an Expression's Type. ). 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. automatically generated by info2www version 1.2.2.9 |