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