Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在相同条件下检查两个变量_C_If Statement - Fatal编程技术网

C 在相同条件下检查两个变量

C 在相同条件下检查两个变量,c,if-statement,C,If Statement,我想根据相同的限制检查不同的变量。我怎样才能把它说得优雅呢 如果(i>8&&j>8),请不要说。我知道,但我对这两个变量有更多的条件,比如 if(i,j>8 || i,j<0) if(i,j>8 | | i,j您必须编写所有条件。唯一的替代方法是使用大量else if,我不推荐使用 如果你真的想隐藏条件逻辑,你可以制作一个函数来实现它(我想是为了让代码更可读?),比如: bool checkTheValues(int i, int j, int k /*etc*/) { i

我想根据相同的限制检查不同的变量。我怎样才能把它说得优雅呢

如果(i>8&&j>8),请不要说
。我知道,但我对这两个变量有更多的条件,比如

if(i,j>8 || i,j<0)

if(i,j>8 | | i,j您必须编写所有条件。唯一的替代方法是使用大量else if,我不推荐使用

如果你真的想隐藏条件逻辑,你可以制作一个函数来实现它(我想是为了让代码更可读?),比如:

bool checkTheValues(int i, int j, int k /*etc*/)
{
    if((i>8&&j>8)||j<i /*or whatever*/)
        return true
    return false;
}
#定义较少(i,j,n)(in)
int main()
{
if(多(i,j,8)|少(i,j,0))
//做事
}
您可以根据需要推断上述示例

使用boost宏

#include <boost/preprocessor/tuple/elem.hpp>
#include <boost/preprocessor/tuple/to_seq.hpp>
#include <boost/preprocessor/seq/for_each_i.hpp>
#include <boost/preprocessor/control/if.hpp>

#define F(r, data, i, elem) BOOST_PP_IF(i, BOOST_PP_TUPLE_ELEM(2, 0, data), ) (elem BOOST_PP_TUPLE_ELEM(2, 1, data))
#define all(cond, ...) (BOOST_PP_SEQ_FOR_EACH_I(F, (&&, cond) , BOOST_PP_TUPLE_TO_SEQ((__VA_ARGS__)) ))

if(all(>8, i, j) || all(<0, i, j))//expand to if(( (i  >8) && (j  >8)  ) || ( (i  <0) && (j  <0)  ))
#包括
#包括
#包括
#包括
#定义F(r,data,i,elem)BOOST_PP_IF(i,BOOST_PP_TUPLE_elem(2,0,data))(elem BOOST_PP_TUPLE_elem(2,1,data))
#定义所有(cond,…)(每个(F,(&&,cond)的BOOST_PP_SEQ_,BOOST_PP_TUPLE_TO_SEQ(((&&,cond)))

如果(全部(>8,i,j)| |全部(8)和&(j>8))| |((我喜欢你这样做。没有其他方法。写一种新的语言…你可以编写返回布尔值的特殊函数,但这将更难阅读。你有很多变量需要检查某些属性,还是有很多属性需要检查两个变量?在这两种情况下,如果多为2,就不会有更容易阅读的对。
#define Less(i, j, n) (i<n && j<n)
#define More(i, j, n) (i>n && j>n)

int main()
{
   if(More(i, j, 8) || Less(i, j, 0))
      // Do stuff
}
#include <boost/preprocessor/tuple/elem.hpp>
#include <boost/preprocessor/tuple/to_seq.hpp>
#include <boost/preprocessor/seq/for_each_i.hpp>
#include <boost/preprocessor/control/if.hpp>

#define F(r, data, i, elem) BOOST_PP_IF(i, BOOST_PP_TUPLE_ELEM(2, 0, data), ) (elem BOOST_PP_TUPLE_ELEM(2, 1, data))
#define all(cond, ...) (BOOST_PP_SEQ_FOR_EACH_I(F, (&&, cond) , BOOST_PP_TUPLE_TO_SEQ((__VA_ARGS__)) ))

if(all(>8, i, j) || all(<0, i, j))//expand to if(( (i  >8) && (j  >8)  ) || ( (i  <0) && (j  <0)  ))