首頁  >  文章  >  後端開發  >  C++語法錯誤:枚舉中的識別符必須是整數常數,怎麼解決?

C++語法錯誤:枚舉中的識別符必須是整數常數,怎麼解決?

WBOY
WBOY原創
2023-08-22 10:27:171115瀏覽

在C 程式設計時,有時會碰到「枚舉中的標識符必須是整數常數」的語法錯誤提示。本文將介紹這個問題的原因以及可能的解決方法。

首先,我們要先明確什麼是列舉。在C 中,枚舉是一種特殊的資料類型,用於定義具有離散取值的常數集合。枚舉中的每個常數都被分配了一個整數值,其中第一個常數預設為0,其餘的常數依次遞增。例如:

enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};

在上面的程式碼中,Weekday是這個枚舉類型的名稱,Monday、Tuesday等是其成員常數,它們分別被分配了0~6的整數值。

但是,當我們在定義枚舉時手誤把某個成員常數的值定義成非整數常數,例如字串或浮點數,就會出現「枚舉中的標識符必須是整數常數”的語法錯誤提示。例如:

enum Fruit {Apple = 1, Banana = 2, Orange = "orange"}; //错误!

在上面的程式碼中,Orange被定義成了一個字串常數,因此編譯時會報錯。

那麼,要如何解決這個問題呢?一個簡單的解決方法是明確指定所有成員常數的整數值,而不使用預設的遞增方式。例如:

enum Fruit {Apple = 1, Banana = 2, Orange = 3};

在上面的程式碼中,我們為每個成員常數手動指定了一個整數值,避免了出現非整數常數的錯誤。

另一種解決方法是使用枚舉類別(enum class)而不是普通枚舉。枚舉類比普通枚舉更加嚴格,不允許使用隱式的整數值轉換,從而避免了上述錯誤。例如:

enum class Fruit {Apple = 1, Banana = 2, Orange}; //Orange自动被分配整数值3

在上面的程式碼中,我們使用了enum class來定義Fruit類型的枚舉,而且沒有為Orange指定整數值,但它仍然被分配了整數值3,因為這是enum class的行為定義。

總之,當在C 程式設計中遇到「枚舉中的標識符必須是整數常數」的語法錯誤時,我們可以透過明確指定成員常數的整數值或使用枚舉類別來解決這個問題。

以上是C++語法錯誤:枚舉中的識別符必須是整數常數,怎麼解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn