在C語言中,合法的常量可以分為以下幾類:
整型常量:由十進制、八進制、十六進制數字組成,可以帶有正負號。例如:123, -456, 0x1A, 077。
浮點型常量:由整數部分、小數部分和指數部分組成,可以帶有正負號。例如:3.14, -0.123, 1.23E-4。
字符常量:由單引號括起來的一個字符。例如:‘a’, ‘1’, ‘+’。
字符串常量:由雙引號括起來的一串字符。例如:“Hello”, “123”, “c語言”。
枚舉常量:定義了一個枚舉類型的常量。例如:enum Color { RED, GREEN, BLUE }; 中的RED, GREEN, BLUE。
符號常量:使用#define預處理指令定義的常量。例如:#define PI 3.14。
判斷一個常量是否合法,可以遵循以下幾個規則:
整型常量必須是一個合法的整數,并且不超出所表示的整型范圍。
浮點型常量必須符合浮點數的表示規范,并且不超出所表示的浮點型范圍。
字符常量只能包含一個字符,并且必須用單引號括起來。
字符串常量可以包含多個字符,并且必須用雙引號括起來。
枚舉常量必須是枚舉類型中定義的常量之一。
符號常量在預處理階段會被替換為對應的值,所以不存在合法性問題。
需要注意的是,常量的合法性判斷是在編譯階段進行的,如果常量在運行時才動態確定的話,就無法在編譯階段進行判斷了。