- 優先級及"++"
執行代碼:
int a = 1;
int b = 0;
int c = 0;
int d = (++a) * (c = 1);
則a,b,c,d的值分別是多少?
2,0,1,2
- 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和文件系統形成了基本的操作系統結構。