我知道你可以写一个如下声明:
if (num1 != a && num1 != b && num1 != c ..........&& num1 != z)
(do something);
但是有更简单的方法将num1变量与其他26个变量进行比较吗?有点像:
if (num1 != a,b,c,d,e,f,g.......)
(do something);
答案 0 :(得分:8)
如果a..g
是连续的常量/枚举值,那么只需使用范围检查。
if (num >= a && num <= g)
{
do_something();
}
else
{
do_something_else();
}
如果它们不连续但不变,则可以使用switch语句。
switch (num)
{
case a:
case b:
case c:
case d:
case e:
case f:
case g:
do_something();
break;
default:
do_something_else();
break;
}
否则,如果它们只是任意变量或表达式,那么您可能只需要进行多次测试。
答案 1 :(得分:5)
您可以将a, ... ,z
放入std::set
,然后使用该套件的find
方法检查num1
是否在那里。这具有对数复杂性,但不允许短路。
答案 2 :(得分:2)
首先,良好的代码设计不应包含如此多的条件序列。
如果你的情况与它完全一样,那就是试图查看列表中是否存在数字,其中列表实际上是变量的集合。您只需将这些数字输入列表(矢量)并执行查找操作即可。
答案 3 :(得分:0)
如果情况允许,将变量存储在单独的类/中。
如果您的问题更多的是关于c ++中是否存在允许smaler if语句的语法,那么可能会在问题中更清楚。
答案 4 :(得分:0)
使用std :: find:
static ValueType values[] = { a, b, ... };
// ...
if ( std::find( begin( values ), end( values ), num )
== end( values ) )