C語言中使用 const 定義常量。編程
例如:編輯器
const INT a = 10;
此處若是添加a = 20;
,編輯器則會報錯,由於此處 a 是隻讀的。
在編譯過程當中,由 const 定義的常量使用字符表存儲,而不佔用內存,提升了程序的效率。優化
注意:爲了區別變量和常量,編程時經常使用大寫字母來置頂常量的名稱來提升可讀性。code
使用 volatile 定義一個經常須要更改的變量。使用 volatile 定義的變量會在編譯器優化時更新,而不是讀取在寄存器中的副本。內存
例如:編譯器
int data = 1,a,b; a = data; ... b=data;
a 在請求變量 data 時,data 的值被寫到了寄存器中。但此時 data 是一個快速更新的值,在程序沒有預料到的時候更改成新的值;而 b 請求 data 的值時,由於寄存器中有現成的 data 值,因此程序會直接將寄存器中過期的 data 值給 b ,所以程序可能出現錯誤。it
volatile data a = 1; int a,b; a = data; ... b = data;
但當使用 volatile 變量時,程序會從新讀取 data 的值給 b ,因此能避免此類錯誤。編譯
有時候會遇到長數據類型名,例如 long long int ,不方便引用。此時可以使用 typedef 來爲 long long int 指定新數據類型名。
例如:class
typedef int it; it data1 =1; /* 使用名稱定義爲 it 的 int 型數據類型 */ it data2 =2;
2020年2月20日補充效率
使用 sizeof() 能夠取得括號內最終數值所佔的字節數。
注意:sizeof 不能用於取出數字的位數
例如:
int data = 10 int main(void) { printf("%d\n",sizeof(data)); /* 輸出內容爲 4 */ return 0; }
C語言對變量提供了兩個類型。其中一個爲 signed ,即有符號數;而另外一個爲 unsigned ,即無符號數。 signed 型能夠用來表示任何數,而 unsigned 型只能用來表示非負數。
其中, signed 型數在內存中的首位用於表示正負,能夠爲 0 或 1 。unsigned 型則是直接表示。因爲這種緣由,產生了「安卓手機時間只能調到 2038 年」的說法。由於 C 語言的時間使用 signed 型表示,到達這個時間,除第一位外,其餘數位均爲 9 ,所以便會迫使進 1 ,所以引起錯誤使時間會變爲負。
例如:
signed int data = -1 /* 也能夠是 1 */ unsigned int data = 1 /* 只能爲 1 ,只能爲非負數 */