Linux C - C基礎篇(一)
char: 字符類型,占1個字節,8bit位,取值范圍為 -128~127(-2^7~2^7-1)。
short: 短整形,2字節,16bit位。
int: 整形,4字節,32bit位。
long: 長整形,4字節,32bit位。
float: 浮點型,4字節,32bit位。
double: 雙精度浮點型,8字節,64位
bool: true/false 使用時需包含頭文件<stdbool.h>。
1) 最高位是符號位,0表示正數,1表示負數。
2) 如果是正數,正常表示(即原碼),如果是負數,先求反碼,再求補碼(補碼為反碼加1)即為他的二進制表示。例如char型的1,用二進制表示為00000001;char型的-1用二進制表示為11111111。
-1原碼:10000001
-1反碼:11111110 (求反碼符號位不變)
-1補碼:11111111
常量,就是在程序運行過程中值無法被改變;變量,就是在程序運行過程中內部存儲的值隨時可以被改變。變量是“可讀、可寫”,而常量,是“只讀”的。
整形常量:12、浮點型常量:12.35、實數型常量:1.3e-5、字符型常量:'a'、字符串型常量:"abc"、標識符常量:#define LEN 10。
變量一般存放在內存中:棧區, 靜態數據區,全局變量區, 堆區。函數中定義的變量,如果不加特殊修飾,都是保存在棧區,函數調用結束,棧空間被自動釋放。
定義變量:
<存儲類型> <數據類型> <變量名>
static/auto/... int/char a
例如:static int a;char c;
存儲類型:
auto:自動存儲類型(一般都省略),申請的變量都保存在棧空間。
register:寄存器型變量,申請的變量保存在寄存器上。速度快,效率高,但不能對其進行取地址操作。
static:靜態存儲類型,申請的變量保存在靜態區,默認初始化為0,初始化語句只執行一次,生存周期為整個程序結束。目的:限制變量的作用域。
extern:外部引用,用于多文件編程。被引用的變量必須是在其他文件中定義過的。
const:只讀存儲類型,相當于常數。
自動類型轉換
將一種類型的數據賦值給另外一種類型的變量時就會發生自動類型轉換,例如:float a = 10;10是int類型的數據,需要先轉換成float類型然后再賦值給變量a。
在不同類型的混合運算中,編譯器也會自動地轉換數據類型,將參與運算的所有數據先轉換為同一種類型,然后再進行計算。轉換的規則如下:
轉換按數據長度增加的方向進行,以保證數值不失真,或者精度不降低。例如,int 和 long 參與運算時,先把 int 類型的數據轉成 long 類型后再進行運算。
所有的浮點運算都是以雙精度進行的,即使運算中只有 float 類型,也要先轉換為 double 類型,才能進行運算。
char 和 short 參與運算時,必須先轉換成 int 類型。
強制類型轉換
自動類型轉換是編譯器根據代碼自己判斷的,有時候我們需要手動的進行數據類型轉換,稱之為強制類型轉換,例如:
(int)(a+b); //將a + b 求得結果的數據類型強制轉換為int型。
運算符算術運算符: + - * / % ++ --
關系運算符: 結果只有真或者假:> < == >= <= !=
邏輯運算:&& || !
位運算:& | ~ ^ << >>
賦值運算 : = , +=
條件運算符: 表達式1 ? 表達式2 : 表達式3;
逗號運算:從左到右依次計算,最后一個表達式的值,作為整個表達式的值。
sizeof運算符:測試變量所占空間的大小。sizeof(類型) 或者 sizeof(變量名)
運算符的優先級
特殊運算符>單目運算符>雙目運算符>三目運算>賦值運算>逗號運算
以上是老韓關于Linux c基礎的總結,如有不足歡迎指點;對Linux c或者Linux驅動感興趣的朋友可以收藏關注,我會持續更新的,謝謝支持!
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。