看起来你想在这里链接 or
:
if (number==1||2||3)
应该写成如下:
if (number==1 || number==2 || number==3)
或者,通过检查number
是否在范围[1,3]
内:
if (number>=1 && number<=3)
如果您想链接许多不是范围的
or
,您可以使用折叠表达式(C++17)创建一个帮助器模板函数:
例子:
#include <functional>
#include <iostream>
template<class T, class BinaryPredicate>
inline constexpr bool chained_or(const T& v1, BinaryPredicate p, const T& v2)
{
return p(v1, v2);
}
template<class T, class BinaryPredicate, class... Ts>
inline constexpr bool chained_or(const T& v1, BinaryPredicate p, const T& v2,
const Ts&... vs)
{
return p(v1, v2) || (chained_or(v1, p, vs) || ...);
}
int main() {
if constexpr (chained_or(6, std::equal_to<int>(), 1,3,4,6,9)) {
std::cout << "6 - true\n";
}
if constexpr(chained_or(7, std::equal_to<int>(), 1,3,4,6,9)) {
std::cout << "7 - true\n";
}
}
当实例化chained_or
时,折叠表达式将展开为:
(6 == 1 || 6 == 3 || 6 == 4 || 6 == 6 || 6 == 9) // true
并且
(7 == 1 || 7 == 3 || 7 == 4 || 7 == 6 || 7 == 9) // false
if(number == 1 || number == 2 || number == 3)
意为:如果数字等于1、2或3,则执行相应操作。 - Retired Ninjaif(2)
会做什么? - Martin Kristiansen