我没能使enum正常工作

I fail to make enum work correctly

本文关键字:工作 常工作 enum      更新时间:2023-10-16
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;
}

总是显示错误。因为我的程序太小,格式也不好。

cout<<e.YES;
cout<<e.NO;

e是一个变量。当你画e.YES时你试图描绘YESe的一个成员;这是不正确的。我想你想要

cout<<YES;
cout<<NO;

使用enum是错误的!你不能写e.YES,你必须以这种方式将值YES赋给变量'e': e = YES,然后你才能显示它。显示将是错误的,cout将把它显示为int值,因此YES将显示为0,NO将显示为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<<"输出枚举值例如,它不会将"YES"写入控制台,而只会将其数值"0"写入控制台。

和一个更好地演示enum用法的版本:

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()可能不像你期望的那样工作,因为你没有给它一个字符代码。