int x
0 以上で 1080 (この場合は画面サイズ) より小さいことを確認しようとしています。
私はこれを思いついた
int x = 123;
x = std::min(std::max(x, 0), 1080);
これは醜いようです。これを達成するためのより良い方法はありますか?
将来住んでいる場合はstd::clamp
、 C++17 から使用できます。
x = std::clamp(x, 0, 1080);
単純なソリューションも問題ないようです。
int x = 123;
if (x < 0)
x = 0;
if (x > 1080)
x = 1080;
またはすべてを関数でラップします。
template<typename T>
T between(const T x, const T min, const T max){
if (x < min)
return min;
if (x > max)
return max;
return x;
}
int x = between(123, 0, 1080);
なぜこのようなことをしないのですか?
int x = 123; /* Or some arbitrary number */
bool bIsInRange = (x >= 0) && (x < 1080);
if(!bIsInRange){
std::cout << "Variable 'x' is not between 0 and 1080." << std::endl;
return 1;
} // else, x is fine. Continue operations as normal.