我现在正在将arduino代码移植到stm32(c/c++)。请帮助我使用this函数:

constrain(x, a, b)

返回

x:如果x在a和b之间

a:如果x小于a

b:如果x大于b

示例
sensVal = constrain(sensVal, 10, 150);

// limits range of sensor values to between 10 and 150

最佳答案

这里是一个模板版本,包括一个完整的程序来演示其用法(您应该能够复制并粘贴该模板):

#include <iostream>

template<class T>
const T& constrain(const T& x, const T& a, const T& b) {
    if(x < a) {
        return a;
    }
    else if(b < x) {
        return b;
    }
    else
        return x;
}

int main() {
    int value = 10;
    std::cout << constrain(value, 5, 20) << "\n"      // prints "10"
              << constrain(value, 15, 20) << "\n"     // prints "15"
              << constrain(value, 5, 9) << std::endl; // prints "9"
}

可以将其用于具有operator<的任何类型(包括所有内置数字类型,例如intfloat)。

10-07 19:05