###### (This is the documentation for SDL3, which is the current stable version. [SDL2](https://wiki.libsdl.org/SDL2/) was the previous version!) # SDL_clamp Return a value clamped to a range. ## Header File Defined in [](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_stdinc.h) ## Syntax ```c #define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) ``` ## Macro Parameters | | | | ----- | --------------------- | | **x** | the value to compare. | | **a** | the low end value. | | **b** | the high end value. | ## Return Value Returns x, clamped between a and b. ## Remarks If `x` is outside the range a values between `a` and `b`, the returned value will be `a` or `b` as appropriate. Otherwise, `x` is returned. This macro will produce incorrect results if `b` is less than `a`. This is a helper macro that might be more clear than writing out the comparisons directly, and works with any type that can be compared with the `<` and `>` operators. However, it double-evaluates all its parameters, so do not use expressions with side-effects here. ## Thread Safety It is safe to call this macro from any thread. ## Version This macro is available since SDL 3.1.3. ---- [CategoryAPI](CategoryAPI), [CategoryAPIMacro](CategoryAPIMacro), [CategoryStdinc](CategoryStdinc)