// -std=c99 -Wall -Wextra -Wpedantic -Wshadow #include #include #include 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 */