我现在正在将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<
的任何类型(包括所有内置数字类型,例如int
和float
)。