enum ENU{YES=0,NO,DONTKNOW};
void func(ENU e)
{
int n;
cout<<"1+1=";
cin >> n;
if(n==2)
cout<<e.YES;
else
cout<<e.NO;
if(ischar(n))
cout<<e.DONTKNOW;
}
始终显示错误。因为我的程序太小而且形成不好。
答案 0 :(得分:5)
答案 1 :(得分:3)
你使用枚举是错误的!你不能写e.YES,你必须以这种方式给变量'e'赋值YES:e = YES然后你可以显示它。 并且显示错误,cout会将其显示为int值,因此YES将显示为0,NO将显示为1.
答案 2 :(得分:1)
你可能想要这样的东西:
enum ENU {YES=0,NO,DONTKNOW};
void func()
{
int n;
cout<<"1+1=";
cin >> n;
if(ischar(n))
cout<< DONTKNOW;
else if(n==2)
cout<< YES;
else
cout<< NO;
}
您的示例中没有必要将参数ENU传递给func()。 此外,您必须首先测试ischar(),以避免在没有必要的情况下进入其他两个测试中的任何一个。 请注意,使用“cout&lt;&lt; YES;”输出枚举值例如,不会向控制台写“YES”,而只会将其数字值写为“0”。
这个版本更好地证明了枚举的使用:
void func()
{
int n;
cout<<"1+1=";
cin >> n;
ENU e = YES;
if(ischar(n))
e = DONTKNOW;
else if(n==2)
e = YES;
else
e = NO;
cout << e << endl;
}
备注:ischar()可能无法正常工作,因为您没有给它提供字符代码。