天天看點

C 語言程式設計 — 變量和常量

目錄

前文清單

變量與常量

變量

變量的類型

變量的聲明

變量的定義

變量的初始化與指派

常量

整型常量

浮點型常量

字元型場景

字元串常量

符号常量

《程式編譯流程與 GCC 編譯器》

《C 語言程式設計 — 基本基本文法》

《C 語言程式設計 — 資料類型》

C 中有兩種類型的表達式:

左值(lvalue):指向記憶體位置的表達式被稱為左值(lvalue)表達式,即:命名辨別符。左值可以出現在指派号的左邊或右邊。

右值(rvalue):指的是存儲在記憶體中某些位址的數值,即:實際的資料值。右值是不能對其進行指派的表達式,也就是說,右值可以出現在指派号的右邊,但不能出現在指派号的左邊。

變量和常量是左值,是以可以出現在指派号的左邊。數值型的字面值是右值,是以不能被指派,不能出現在指派号的左邊。

變量其實就是一個有名字的資料項。或者說,變量表示一個具有名字的,具有特定屬性的存儲空間。在程式運作過程中該存儲空間内的資料值可以被改變。習慣上,變量名使用小寫字母表示,而大寫字母常用于字元常量或自定義資料類型名。

變量具有下列三個要素:

變量名:記憶體入口位址

資料類型:決定了記憶體空間的大小

資料值:儲存在記憶體空間中的數值

變量名由字母、數字和下劃線字元組成。它必須以字母或下劃線開頭,大小寫敏感。有以下幾種基本的變量類型:

C 語言程式設計 — 變量和常量

此外,C 語言也允許定義各種其他類型的變量,比如枚舉、指針、數組、結構、共用體等等。

變量聲明,向編譯器保證變量以指定的類型和名稱存在,這樣編譯器在不需要知道變量完整細節的情況下也能繼續進一步的編譯。變量聲明隻在編譯時有它的意義,在程式連接配接時編譯器需要實際的變量聲明,當程式使用了一個沒有被聲明的變量名時候就會出現編譯錯誤。

若隻是聲明定義了變量的資料類型,但卻沒有為變量賦予資料值,則變量所配置設定的記憶體單元中還保留着自上一次記憶體單元存儲的舊資料。

變量的聲明有兩種情況:

一種是需要建立存儲空間的。例如:<code>int a</code> 在聲明的時候就已經建立了存儲空間。

另一種是不需要建立存儲空間的,通過使用 extern 關鍵字聲明了變量名而不定義它。 例如:<code>extern int a</code> 其中變量 a 可以在别的檔案中進行定義的。

變量定義,就是告訴編譯器在何處建立變量的存儲,以及如何建立變量的存儲。本質就是确定了記憶體位址的起始位址和記憶體空間大小。

不帶初始化的定義:帶有靜态存儲持續時間的變量會被隐式初始化為 NULL(所有位元組的值都是 0),其他所有變量的初始值是未定義的。

同時完成變量的定義和初始化:把數值填充到記憶體空間。

變量的初始化本質就是與變量定義同時進行的第一次指派,此外的都稱之為指派。

常量就像是正常的變量,常量是固定值,在程式執行期間不會改變,通常使用大寫字母辨別。

C 語言程式設計 — 變量和常量

整型常量:即整數

浮點型常量:又稱為實型常量,即小數,可使用小數或指數形式來表示

字元型常量:即符号,用單引号括起來的一個字元,具有一般字元和轉義字元兩種類型

字元串常量:即用雙引号括起來的多個字元組成的字元序列

符号常量:即對常量進行命名,是以字元常量即是常量名,使用 const 關鍵字或 #define 預處理器指令來定義

整數常量可以是十進制、八進制或十六進制的常量,通過字首來确定。整數常量也可以帶一個字尾,字尾是 U 和 L 的組合,U 表示無符号整數(unsigned),L 表示長整數(long)。字尾可以是大寫,也可以是小寫,U 和 L 的順序任意。

C 語言程式設計 — 變量和常量

浮點型常量,又稱實型常量,具有以下兩種表示方式:

小數形式:帶小數點的常數。例如:21.290000。

指數形式(科學計數法):由數符尾數(整數或小數)、階碼标志(E 或 e)、階符和整數階碼組成的常數。例如:2.129000e+001。

NOTE:

浮點型常量預設為雙精度 double 類型。

若浮點型常量以 F 或 f 結尾,表示該浮點型常量為單精度 float 類型常量。

若浮點型常量以 l 或 L 結尾,表示該浮點型常量為 long double 類型常量。

字元型(Char)常量:用單引号括起來,具有兩種類型:

一般字元常量:一個用單引号 ’ ’ 括起來的字元。

轉義字元常量:一個用單引号 ’ ’ 括起的,并以反斜杠 ‘’ 開頭的字元,用于表示具有特殊功能的字元。

字元型常量占用 1Byte 記憶體空間,以 ASCII 碼形式(即整型)存儲。 是以,字元型資料對象和整型資料對象是可互相轉換的。

C 語言程式設計 — 變量和常量

下表列出了轉義序清單:

C 語言程式設計 — 變量和常量

字元串(String)常量:一個用雙引号 " " 括起來的字元串,可以儲存多個字元(e.g. “abc”)。

字元串常量中的字元序列在記憶體中連續存儲,并在最後面加上轉義字元 ‘\0’ 作為字元串結束标志,字元 ‘\0’ 占用 1Byte 記憶體空間。 例如:字元串 “HELLO” 在記憶體實際占據 6Bytes,實際字元存放順序為 ‘H’、‘E’、‘L’、‘L’、‘O’、’\0’。

下面的執行個體顯示了一些字元串常量。下面這三種形式所顯示的字元串是相同的。

使用符号來作為常量的辨別,是以也叫常量名。

符号常量具有兩種定義方式:

使用 <code>#define</code> 預處理器定指令義常量的形式,不需要聲明常量的資料類型:<code>#define 符号常量名 常量表達式;</code>。

使用 <code>const</code> 關鍵字聲明指定類型的常量:<code>const 資料類型 符号常量名 = 常量表達式;</code>。

通常的,使用 const 方式定義常量時,必須初始化常量。

在程式運作過程中,不能修改符号常量的資料值。

符号常量名一般用大寫字母表示。

符号常量定義中的常量表達式不能含有變量或函數。

繼續閱讀