編程基礎知識

  1. 優先級及"++"
執行代碼:
int a = 1;
int b = 0;
int c = 0;
int d = (++a) * (c = 1);
則a,b,c,d的值分別是多少?
2,0,1,2
  1. bool 類型與float 類型使用if判斷“零值”
bool flag;
	if(flag) 或 if(!flag)
float x = 0.001;
	if(x <= 0.001)

3.數據類型的轉換

void foo(void)
{
	unsigned int a = 6;
	int b = -20;
	(a+b>6) ? puts(">6") : puts("<=6"); 
}
輸出:
	>6
有符號數與無符號數轉換規則, 將轉換爲無符號類型。
-20 的機器數爲FFFF FFECH
則a+b大於 6

4、struct結構體的長度

struct my_struct
{
	char a;
	int   b;
	char c;
}
長度爲12,因爲字節自動補齊, char 2字節->4字節,int 4字節,char 2字節->4字節,爲12字節

5、#define

是預處理指令,在預處理過程進行簡單的字符串替換,不作正確性檢查。
不只是可以爲類型取別名,還可以定義變量、編譯開關等。
*一定要注意使用括號,保護變量的定義
對指針類型的定義一定要規避風險

6、typedef

是關鍵字,在編譯過程中存在類型檢查功能。
不能在一個函數定義裏面使用typedef。
用來定義類型的別名,定義機器無關的類型

7.volatile

保證了共享變量的“可見性”
在編譯過程不優化,在執行的時候不緩存,每次都需要從內存中讀出來,避免資源爭奪。

8、linux系統組成

主要由內核、shell、文件系統和應用程序組成。
內核、shell和文件系統形成了基本的操作系統結構。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章