gpt4 book ai didi

c++ - #if elif 指令未按预期工作

转载 作者:行者123 更新时间:2023-11-30 01:44:05 26 4
gpt4 key购买 nike

我正在尝试使用 if elif 测试一个条件,但我没有得到想要的结果。请帮助我确定我做错了什么?

#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时,仍然提示“积分太少”。

请帮忙。

最佳答案

您不能在运行时使用依赖于变量值的预处理器宏。

除非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.
}

关于c++ - #if elif 指令未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36832902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com