我正在尝试使用if ifif来测试一个条件,但我没有得到预期的结果。请帮我确定一下我做错了什么?
#include <iostream>
using namespace std;
#define a(t1)(t1+50)
#define b(t2)(t2+100)
int main()
{
union gm
{
int t1;
int t2;
};
gm c;
cout <<"Enter tokens earned in game 1: "<<endl;
cin>>c.t1;
int x=c.t1;
cout <<"Enter tokens earned in game 2: "<<endl;
cin>>c.t2;
int y=c.t2;
int m= a(x)+100;
int n= b(y)+50;
int p;
p=m+n;
cout <<p<<endl;
#if(p<500)
cout <<"Points earned too less"<<endl;
#elif (p>500 && p<1500)
cout<<"You can play game 1 free"<<endl;
#elif (p>1500 && p<2500)
cout<<"You can play game 1 free"<<endl;
#elif p>3000
cout<<"You can play game 1 and game free"<<endl;
#endif
return 0;
}
当P的值超过500时,仍显示“积分太少”的消息。
请帮忙。
答案 0 :(得分:4)
在运行时,不能使用依赖于变量值的预处理器宏。
除非将p
定义为预处理器宏,否则
#if(p<500)
翻译为:
#if(0<500)
由于这是真的,只有那段代码被编译成目标代码。这解释了你所看到的行为。
您需要使用C ++的if-else
语句,而不是预处理器。
if (p<500)
{
cout <<"Points earned too less"<<endl;
}
else if (p>500 && p<1500)
{
cout<<"You can play game 1 free"<<endl;
}
else if (p>1500 && p<2500)
{
cout<<"You can play game 1 free"<<endl;
}
else if ( p>3000 )
{
cout<<"You can play game 1 and game free"<<endl;
}
else
{
// Do something for everything else.
}