怎樣確定常量的型別

2021-10-05 21:18:10 字數 1529 閱讀 8232

在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處理

要注意區分型別和變數,每乙個變數都屬於乙個確定的型別。型別是變數的乙個重要屬性。變數是占用儲存單元的,是具體存在的實體,在其占用儲存單元中可以存放資料。而型別是變數的共性,是抽象的,不占用儲存單元,不能用來存放資料。

正確定義Objective C常量

本文由 migrant 本文只是乙個關於如何在cocoa 中定義常量的書籤貼,答案來自於stackoverflow.com的這個問題。這裡為那些懶人提供了一些簡短的介紹和帖子本身。你可能讀遍了蘋果開發者文件,知道一些特定的方法引數只能接受定義為常量的列舉值列表。比如事件型別標記 nskeyupmas...

字元常量的型別

c 使用 int 型別來處理字元常量,而不是 char 型別。例如,在使用32位 int 的ascii 系統中,以下 char ch c c 的編碼值 67 被儲存於 32 位的記憶體單元中 不過 ch 仍然儲存於 8 位的記憶體單元中,只是它的值變成了 67。因此,我們可以定義形如 good 的古...

常量及其型別

2.2常量及其型別 常量是指在程式執行過程中,其值保持不變的量。常量也分各種型別。1.整數 整數在計算機中是準確表示的,c語言中的整數可以用十進位制 八進位制和十六進製制表示。1 八進位制整數是以數字0開頭,八進位制整數一般不使用負數。2 十六進製制整數是以數字0和字母x 大小寫均可 打頭。例如,0...