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;
}
總是顯示錯誤。因爲我的節目太小而且形成不良。我無法正確使枚舉工作
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;
}
總是顯示錯誤。因爲我的節目太小而且形成不良。我無法正確使枚舉工作
你可能想是這樣的:
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;」例如,不會向控制檯寫入「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()可能無法正常工作,你所期望的,因爲你不給它一個字符代碼。
由於沒有明確初始化'n'並且輸入流可能不包含整數,因此'ischar(n)'的結果未定義。也就是說,你應該明確地將'n'初始化爲一個已知值。 – ildjarn
@ildjarn:_Potentially_ undefined。 –
你使用枚舉是錯誤的!你不能寫e.YES,你必須以這種方式給變量'e'賦值YES:e = YES,然後你可以顯示它。 和顯示器將是錯誤的,COUT將顯示它作爲int值,這樣是將顯示爲0和NO將顯示爲1
太遲....:P –
總是顯示什麼錯誤? – Bart
什麼錯誤?什麼是「ischar」? –
謝謝,我只是想知道誰關心我的帖子。我不會再發布。謝謝。 – Dalton