關鍵字
數據類型修飾相關
auto
按照自動的方式進行變量的存儲
const
定義常量或常參數
extern
聲明外部變量或函數
register
指定變量的存儲類型是寄存器變量
static
指定變量的存儲類型是靜態變量,或指定函數是靜態函數
volatile
變量的值可能在程序的外部被改變
數據類型相關
char
字符型數據
short
定義短整型變量或指針
int
整型數據
long
長整型數據
signed
有符號的整型數據
unsigned
定義無符號的整型變量或數據
float
單精度浮點型數據
double
雙精度浮點型數據
struct
結構體型數據
enum
枚舉型類型
union
聯合型數據
void
空型數據
typedef
為數據類型定義別名
流程控制相關
continue
結束本次循環進入下一次循環
break
跳出循環或switch語句
switch
定義switch語句
case
定義switch中的case子句
default
定義switch中的default子句
do
定義do-while語句
while
定義while或do-while語句
if
定義if語句或if-else語句
else
定義if-else語句
for
定義for循環語句
goto
定義goto語句
預處理相關
#include
包含頭文件
#define
定義宏
#undef
取消已經定義的宏
#if
定義條件編譯的條件
#ifdef
定義條件編譯的條件
ifndef
定義條件編譯的條件
#elif
定義條件編譯的條件
#endif
結束條件編譯
其他
return
從函數返回
運算符
優先級 | 運算符 | 含義 | 操作數數目 | 結合方向感 |
---|---|---|---|---|
1 | () [] -> . | 括號(函數等),數組,兩種結構成員訪問 | 雙目 | 左-右 |
2 | ! ~ ++ -- + - |* & (類型) sizeof | 否定,按位取反,自增,自減,正負號,間接,取址,類型轉換,求大小 | 單目 | 右-左 |
3 | * / % | 乘,除,取模 | 雙目 | 左-右 |
4 | + - | 加,減 | 雙目 | 左-右 |
5 | << >> | 左移,右移 | 雙目 | 左-右 |
6 | < <= >= > | 小於,小於等於,大於等於,大於 | 雙目 | 左-右 |
7 | == != | 等於,不等於 | 雙目 | 左-右 |
8 | & | 按位與 | 雙目 | 左-右 |
9 | ^ | 按位異或 | 雙目 | 左-右 |
10 | | | 按位或 | 雙目 | 左-右 |
11 | && | 邏輯與 | 雙目 | 左-右 |
12 | || | 邏輯或 | 雙目 | 左-右 |
13 | ? : | 條件 | 三目 | 右-左 |
14 | = += -= *= /= &= ^= |= <<= >>= | 各種賦值 | 雙目 | 右-左 |
15 | , | 逗號(順序) | 雙目 | 左-右 |
()
括號運算符,表示一個標識符代表一個函數,fcnname()。 還可用於划分優先級,即1+23,如果不記得先算+還是先算,那就寫成1+(23)或(1+2)3。最后,括號還可以用於C的強制類型轉換。
[]
數組運算符,表示一個標識符代表一個數組,arrname[]。從數組中取一個元素,arr[2]
->
成員訪問,用於通過指針變量訪問成員,ptr->member等價於(*ptr).member
.
成員訪問,訪問復合數據類型的成員
~
按位取反,1變0,0變1
++
自增運算符,將變量自身的值加一,分為前++和后++,前++是先執行自增使用增加后的值進行運算,后++是先進行運算,語句執行完畢后再進行++,效率不如前++,因為需要將變量的值臨時復制一份
*
取值運算符,聲明某一類型的變量。取一個指針變量指向的值
&
取址運算符,取一個變量的地址
<<
左移運算符,將操作數的二進制數據向左移一位,低位補0。當然是對補碼移動,但對原碼還是補碼進行左移其結果都相當於將數據乘以2的n次方
<<
右移運算符,將操作數的二進制數據向右移一位,帶符號右移時高位補0,右移n位相當於除以2的n次方,不帶符號時高位補符號位,此時非負數還是相當於除以2的n次方,負數就不是了
&
按位與,有0出0,全1出1
^
按位異或,不同為1,相同為0,使用異或交換兩個數:a^=b;b^=a;a^=b;
|
按位或,有1出1,全0出0,
&&
邏輯與,全真為真,有假為假,C語言中用1表示負真異,0表示非負假同
?:
條件運算符,C語言中唯一一個三目運算符,表達式A?表達式B:表達式C表示對表達式A的值進行判斷,如果A為真,則執行表達式B,否則執行表達式C
標識符
C語言里使用名稱區分不同內容,諸如變量名,函數名etc這些名稱叫做標識符(Identifier),實際開發總是采用駝峰式或者下划線式來書寫標識符,標識符的長度沒有限制,但是編譯器只會截取一部分使用
它的編寫規則:
- Keyword不能當標識符
- 第一個字符應該是 英文字母、下划線
- 后面的每個字符可以是 英文字母、下划線、阿拉伯數字字符
- 大小寫敏感