RicardasSim icon

Clamp Value

RicardasSim | PRO | 12/23/20 03:53:24 PM UTC | 0 ⭐ | 1127 👁️ | Never ⏰ | []
C |

1.22 KB

|

None

|

0 👍

/

0 👎

// -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