使用 const 創建常量和使用 volatie 優化變數
C語言中使用 const 定義常量,
例如:
const INT a = 10;
此處如果添加a = 20;,編輯器則會報錯,因為此處 a 是只讀的,
在編譯程序中,由 const 定義的常量使用字符表存盤,而不占用記憶體,提高了程式的效率,
注意:為了區別變數和常量,編程時常常使用大寫字母來置頂常量的名稱來提高可讀性,
使用 volatile 定義一個常常需要更改的變數,使用 volatile 定義的變數會在編譯器優化時更新,而不是讀取在暫存器中的副本,
例如:
int data = https://www.cnblogs.com/moreal/p/1,a,b;
a = data;
...
b=data;
a 在請求變數 data 時,data 的值被寫到了暫存器中,但此時 data 是一個快速更新的值,在程式沒有預料到的時候更改為新的值;而 b 請求 data 的值時,因為暫存器中有現成的 data 值,所以程式會直接將暫存器中過時的 data 值給 b ,因此程式可能出現錯誤,
volatile data a = 1;
int a,b;
a = data;
...
b = data;
但當使用 volatile 變數時,程式會重新讀取 data 的值給 b ,所以能避免此類錯誤,
使用簡短的資料型別名
有時候會遇到長資料型別名,例如 long long int ,不方便參考,此時可使用 typedef 來為 long long int 指定新資料型別名,
例如:
typedef int it;
it data1 =1; /* 使用名稱定義為 it 的 int 型資料型別 */
it data2 =2;
2020年2月20日補充
使用 sizeof 取得資料大小
使用 sizeof() 可以取得括號內最終數值所占的位元組數,
注意:sizeof 不能用于取出數字的位數
例如:
int data = https://www.cnblogs.com/moreal/p/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 = https://www.cnblogs.com/moreal/p/-1 /* 也可以是 1 */
unsigned int data = 1 /* 只能為 1 ,只能為非負數 */
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/51149.html
標籤:C
下一篇:從零開始設計一套指令集及其虛擬機
