八進制 與 二進制
- 一位八進制數 對應 三位二進制數
十六進制 與 二進制
- 一位十六進制數 對應 四位二進制數
進制
- 二進制 : 0b 或者 0B
- 八進制 : 0 0123
- 十六進制 :0x 或者 0X
數據類型:
short
- 短整型 佔用 2個字節
int
- 整型 佔用4個字節 16位系統下 , int 佔2個字節
long
- 長整型 佔用4個字節(32) 8個字節(64位系統下)
bool
- 佔用內存空間 : 1個字節
- 取值範圍(值域) : true(1) , false(0)
- 邏輯真 (非零) 假 (零值)
- 注意添加頭文件:
#include <stdbool.h>
char 型
- 處理字符
- 佔用內存空間 1個字節
- 取值範圍(值域) : (signed) char 有符號數 ; -128 ~ +127
- unsigned char 無符號數 ; 0 ~ 255
float
- 單精度 佔用4個字節
double
- 雙精度 佔用8個字節
* 浮點型 : 所有浮點型數據全部爲約值
有符號負數
- -127
- 原碼 : 1111 1111
- 反碼 : 1000 0000
- 補碼 : 1000 0001
* 在任意字符串的末尾會存在 字符串終止符 ‘\0’
變量
- 存儲類型 數據類型 變量名
- 全局變量 :定義的表達式不位於任意的函數體內部.
- auto : 最常用最不常見.
auto 修飾局部變量 , 如果局部變量前沒有出現存儲類型,
則編譯器默認該變量的存儲類型爲auto . - register : 寄存器型 (修飾局部變量)
提醒系統在執行程序時把該數據存放在寄存器中,
縮短程序執行時間, 提高程序執行效率.
如果在寄存器沒有多餘的存儲空間時, 會把該數據默認爲auto進行處理. - extern : 外部參照引用類型
引用在同一個C語言工程中定義的全局變量 . - 變量的定義:分配存儲空間
- 變量的聲明:不分配存儲空間.
static : 靜態存儲類型
修飾局部變量 : 改變局部變量的存儲位置, 延長變量的生命週期到程序執行結束.
變量的值爲上一次運算的結果值.- 修飾全局變量 :防止其他文件引用本文件定義的全局變量.
- 修飾函數 : 防止其他文件引用本文件定義的函數.
內存分區
代碼區 :
靜態區 :
- 全局變量 、 static修飾的局部變量 、常量
.bss段(未初始化數據區) .data段(已初始化數據區) rodata 常量區
如果數據未初始化, 默認值爲0 .
堆區 :
棧區 :
- 局部變量 , 函數參數 .
如果數據未初始化, 默認值爲隨機值.
* 有符號數與無符號數同時參與運算時, 有符號數默認轉換爲無符號數參與運算.
位運算符 : ~ & | ^ << >>
& :
- 任意一位和 1相與, 結果值不變; 任意一位和 0相與, 結果值爲0
| :
- 任意一位和 0相或, 結果值不變; 任意一位和 1相或, 結果值爲1
異或 :
- 兩者相同爲0, 不同爲1 ;
左移 : <<
- 左端捨棄, 右端補零
右移: >>
- 邏輯右移: 右端捨棄, 左端補零
- 算術右移: 右端捨棄, 左端補符號位.
sizeof函數 :
- 作用: 計算已知數據類型佔用內存空間的字節數.
- sizeof(類型名或者變量名);