// -std=c99 -Wall -Wextra -Wpedantic -Wshadow
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
uint32_t ClampUintVal( uint32_t v, uint32_t min_v, uint32_t max_v )
{
uint32_t tmp = v < min_v ? min_v : v;
return tmp > max_v ? max_v : tmp;
}
int32_t ClampIntVal( int32_t v, int32_t min_v, int32_t max_v )
{
int32_t tmp = v < min_v ? min_v : v;
return tmp > max_v ? max_v : tmp;
}
double ClampDoubleVal( double v, double min_v, double max_v )
{
double tmp = v < min_v ? min_v : v;
return tmp > max_v ? max_v : tmp;
}
int main()
{
printf( "(1) %d\n", ClampUintVal( 5, 2, 10 ) );
printf( "(2) %d\n", ClampUintVal( 1, 2, 10 ) );
printf( "(3) %d\n\n", ClampUintVal( 16, 2, 10 ) );
printf( "(4) %d\n", ClampIntVal( 5, 2, 10 ) );
printf( "(5) %d\n", ClampIntVal( -1, 2, 10 ) );
printf( "(6) %d\n\n", ClampIntVal( 16, 2, 10 ) );
printf( "(7) %f\n", ClampDoubleVal( 5.0, 2.0, 10.0 ) );
printf( "(8) %f\n", ClampDoubleVal( -1.0, 2.0, 10.0 ) );
printf( "(9) %f\n\n", ClampDoubleVal( 16.0, 2.0, 10.0 ) );
return 0;
}
/*
output:
(1) 5
(2) 2
(3) 10
(4) 5
(5) 2
(6) 10
(7) 5.000000
(8) 2.000000
(9) 10.000000
*/
Comments