Products
and Services Support
and Docs Training Partner Programs About Red
Hat
  download storecart
red hat logo
redhat.comredhat network

Red Hat Documentation

Minimum and Maximum Operators in C++ Contents|Index|Previous|Next
 Minimum and maximum operators in C++

It is very convenient to have operators which return the minimum or the maximum of two arguments. For instance, in GNU C++ (but not in GNU C), operations perform the following.
  • 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 (see 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.

 

 


 
© 2001 Red Hat, Inc. All rights reserved.
About Red Hat  :  Legal statement  :  Privacy statement  :  Y2K statement  :  Contact Red Hat