在C語言中不僅變量有類型,常量也有類型。為什麼要把常量分為不同的類型呢?在程序中出現的常量是要存放在計算機中的存儲單元中的。這就必須确定分配給它多少字節,按什麼方式存儲。例如,程序中有整數12,在Visual C 6.0中會分配給它4個字節,按補碼方式存儲。
怎樣确定常量的類型呢?
從常量的表示形式即可判定其類型。對于字符常量很簡單,隻要看到由單撇号括起來的單個字符或轉義字符就是字符常量。對于數值常量按以下規律。
整型常量。不帶小數點的數值是整型常量,但應注意其有效範圍。如在Turbo C中,系統為整型數據分配2個字節,其表值範圍為-32768~32767,如果在程序中出現數值常量23456,系統把它作為int型處理,用2個字節存放。如果出現49875,由于超過32768,2個字節放不下,系統會把它作為長整型(long int)處理,分配4個字節。在Visual C 中,凡在-2147483648~2147483647之間的不帶小數點的數都作為int型,分配4個字節,在此範圍外的整數,而又在long long型數的範圍内的整數,作為long long型處理。
在一個整數的末尾加大寫字母L或小寫字母l,表示它是長整型(long int)。例如123L,234l等 。但在Visual C 中由于對int和long int型數據都分配4個字節,因此沒有必要用long int型。
浮點型常量。凡以小數形式或指數形式出現的實數,是浮點型常量,在内存中都以指數形式存儲。如:10是整型常量,10.0是浮點型常量。那麼對浮點型常量是按單精度處理還是按雙精度處理呢?C編譯系統把浮點型常量都按雙精度處理,分配8個字節。
注意:C程序中的實型常量都是雙精度浮點型常量。
如果有:float a=3.14159;在進行編譯時,對float變量分配4個字節,但對于浮點型常量3.14159,則按雙精度處理,分配8個字節。編譯系統會發出“警告”(waring:truncation from 'const double'to 'float')。意為“把一個雙精度常量轉換為float型”,提醒用戶注意這種轉換可能損失精度。這樣的“警告”一般不會影響程序運行結果的正确性,但會影響程序運行結果的精确度。如果對精确度要求不是很高,可以容忍這樣的“警告”,使程序接着進行連接和運行。
可以在常量的末尾加專用字符,強制指定常量的類型。如在3.14159後面加字母F或f,就表示是float型常量,分配4分字節。如果在實型常量後面加大寫或小寫L,指定此常量為long double類型,如:
float a=3.14159f; //把此3.14159按單精度浮點常量處理,編譯時不出現“警告”。
long double a=1.23L; //把此1.23作為long double處理
要注意區分類型和變量,每一個變量都屬于一個确定的類型。類型是變量的一個重要屬性。變量是占用存儲單元的,是具體存在的實體,在其占用存儲單元中可以存放數據。而類型是變量的共性,是抽象的,不占用存儲單元,不能用來存放數據。
搜索微信公衆号【balayihuier】或掃描下方二維碼關注微信公衆号,資深軟件工程師帶你手把手撸代碼,從此走上人生巅峰,迎娶白富美!
公衆号《吧啦一會兒》,手把手帶你撸代碼
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!