在 C++ 中,從 C++11 標準開始,不再支援將未指定型別的整數常量隱式視為 int 型別。 這意味著在 C++ 中,您不能像在 C 中那樣簡單地編寫數值常量而不指定其型別。
例如,在 C 語言中,以下 ** 是合法的:
int a = 5;在 C 中,5 預設為 int 型別。
但在 C++ 中,如果您嘗試這樣做,編譯器通常會給您乙個警告或錯誤,您需要顯式指定常量的型別。
有 7 種主要方法可以解決這個問題:
1.顯式指定常量型別
通過直接在整數常量後面加上字尾 u、l、ll、ul、ull 等來顯式指定其型別。 例如:
int a = 5l;l 字尾表示 long 型別。
unsigned int b = 10u;u 字尾表示 unsigned int 型別。
2.使用靜態強制轉換
可以使用靜態強制轉換將整數常量顯式轉換為特定的整數型別。 例如:
int a = static_cast(5);
3.使用文字字尾
C++11 及更高版本提供了文字字尾,允許您建立特定型別的文字。 例如,100ll 是乙個長長的文字。 這可以幫助您顯式指定整數常量的型別。
4.避免混合整數型別
盡量保持 ** 中的整數型別一致,避免混合不同型別的整數。 這樣可以減少由於型別不匹配而導致的錯誤和警告。
5.更新**以適應新標準
如果要從舊 C 遷移,則可能需要更新這些內容以適應新的 C++ 標準。 這包括將未指定型別的整數常量替換為顯式型別的常量。
6.使用特定於編譯器的診斷選項
某些編譯器提供了特定的診斷選項,可幫助您識別和修復這些型別的問題。 您可以檢視編譯器的文件,了解如何啟用這些選項。
7.進行充分的測試
修改後,請確保進行充分的測試,以確保修改不會引入新的錯誤或問題。
總之,雖然 C++ 不再支援預設的 int 型別,但通過使用上述方法,您可以輕鬆解決這個問題,並確保您的型別符合新的 C++ 標準。