A preprocessor macro that returns the smaller of two values.


#define __min(a,b) (((a) < (b)) ? (a) : (b))


a, b
Values of any type that the < operator works on.

Return Value

The smaller of the two arguments.


The __min macro compares two values and returns the value of the smaller one. The arguments can be of any numeric data type, signed or unsigned. Both arguments and the return value must be of the same data type.

The argument returned is evaluated twice by the macro. This can lead to unexpected results if the argument is an expression that alters its value when it is evaluated, such as *p++.


Routine Required header
__min <stdlib.h>


// crt_minmax.c

#include <stdlib.h>
#include <stdio.h>

int main( void )
   int a = 10;
   int b = 21;

   printf( "The larger of %d and %d is %d\n",  a, b, __max( a, b ) );
   printf( "The smaller of %d and %d is %d\n", a, b, __min( a, b ) );
The larger of 10 and 21 is 21
The smaller of 10 and 21 is 10

See also

Floating-Point Support