我想根据变量的值使用特定的宏。 我们怎样才能在c ++中做到这一点?
示例:
#define ONE 1
#define TWO 2
#define THREE 3
#define FOUR 4
int main()
{
int i = 0;
i = fun();
if (i == 1)
printf("%d\n", ONE);
else if(i == 2)
printf("%d\n", TWO);
else if(i == 3)
printf("%d\n", THREE);
else if(i == 4)
printf("%d\n", FOUR);
return 0;
}
如果不使用那么多if else语句,我怎么能这样做?
答案 0 :(得分:1)
您可以使用开关:
switch(fun()) {
case 1: printf("%d\n", ONE); break;
case 2: printf("%d\n", TWO); break;
case 3: printf("%d\n", THREE); break;
case 4: printf("%d\n", FOUR); break;
default: break;
}
在您的情况下或数组:
const int ints[] = {ONE, TWO, THREE, FOUR};
const int i = foo();
if (1 <= i && i <= 4) {
printf("%d\n", ints[i - 1]);
}
对于稀疏值(i
),std::map
应该替换数组。