c語言標(biāo)識(shí)符分類
標(biāo)識(shí)符.png
c語言標(biāo)識(shí)符命名方式:C語言中大寫字母與小寫字母不同
避免用中文拼音命名考婴,change是“改變”還是“嫦娥”有歧義
C語言變量類型
ASCII碼中48表示'0'贩虾,65表示'a',97表示’A'
1.變量存儲(chǔ)在哪里沥阱?
變量的標(biāo)識(shí)存放在可執(zhí)行文件對應(yīng)的段內(nèi)
__text, __data,__bss
??bss段(Block Started by Symbol)通常指用來存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域缎罢。
??data段(data segment)通常指用來存放程序中已經(jīng)初始化的全局變量的一塊內(nèi)存區(qū)域。
??text段(code segment/text segment)通常指用來存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域考杉。這部分區(qū)域大小在程序運(yùn)行前就已經(jīng)確定策精,并且內(nèi)存區(qū)域通常屬于只讀(某些架構(gòu)允許代碼段為可寫,即允許修改程序崇棠。)
??此段也可能包含一些只讀的常數(shù)變量咽袜,例如字符串常量等。
變量對應(yīng)的內(nèi)容枕稀,存放在系統(tǒng)當(dāng)中的內(nèi)存區(qū)域中
2.為什么需要這樣定義询刹?
C語言作為一種高級(jí)語言,雖然我們可以通過一定的匯編知曉其內(nèi)部的操作萎坷,但在不同的平臺(tái)上凹联,其匯編的代碼是有一定區(qū)別的。這樣定義可以完成C語言跨平臺(tái)操作哆档,體現(xiàn)了其高移植性蔽挠。
3.變量怎么用
當(dāng)寫下面這條語句時(shí),系統(tǒng)做了什么
int i = 10;
int 定義數(shù)據(jù)存放類型為int類型瓜浸;指明其在內(nèi)存中占有sizeof(int)個(gè)字節(jié)澳淑,具體數(shù)值和系統(tǒng)位數(shù)、編譯器位數(shù)有關(guān)插佛。
變量名 在可執(zhí)行文件的對應(yīng)位置進(jìn)行聲明的一種和地址映射的標(biāo)識(shí)符
= 賦值操作
10 一個(gè)只能讀取的值偶惠,不能改變不能設(shè)置,初始化前面申請的地址空間中的內(nèi)容
左值與右值(關(guān)于這個(gè)值是否可以進(jìn)行讀寫操作)
左值指能夠在=左邊存在的值朗涩,也就代表這個(gè)值是可以進(jìn)行賦值操作的
右值值能夠在=右邊存在的值忽孽,也就是這個(gè)值可以進(jìn)行取值操作
4.何謂常量
常量其實(shí)就是只能進(jìn)行取值操作的簡單量,一般常量都是只能作為右值的
諸如數(shù)字 1 100 1.33 字符串都是右值
main也是右值,但main是一個(gè)可以變化的量兄一,函數(shù)名在某些情況下是可以發(fā)生變化的
表達(dá)式i = 10的值是一個(gè)右值厘线,為10。
C++對C的左值和右值表達(dá)式進(jìn)行了一定的更新出革,比如三目運(yùn)算符在C語言中返回值為右值造壮,在C++中返回值為左值。
C語言運(yùn)算符優(yōu)先級(jí)表
特殊的運(yùn)算符
(1)取余運(yùn)算骂束,只針對整數(shù)類型
(2)邏輯與 和邏輯或的短路特性
??這兩個(gè)操作符的結(jié)合性是從左到右的耳璧,如果左邊的操作數(shù)不滿足條件,右邊的操作數(shù)也不會(huì)得到處理
(3)三目運(yùn)算符
??printf()函數(shù)在C語言中返回的是數(shù)值而不是變量展箱,只能做右值不能做左值
為什么()[]->的優(yōu)先級(jí)最高
因?yàn)槌蓡T直接和它們綁定
為什么單目運(yùn)算符優(yōu)先級(jí)第2高
因?yàn)樗鼈兪菍ψ陨磉M(jìn)行處理
關(guān)于優(yōu)先級(jí)的簡單描述
單目運(yùn)算符下面是乘除取余加減移位運(yùn)算符
<>=<=旨枯,==!=關(guān)系運(yùn)算符處于中間層次
再下面是位與位異或位或混驰,邏輯與邏輯或攀隔,三目運(yùn)算符,賦值運(yùn)算符栖榨,逗號(hào)運(yùn)算符昆汹。
結(jié)合性為自右向左的運(yùn)算符有3類:
優(yōu)先級(jí)位于第二級(jí)的單目運(yùn)算符,三目運(yùn)算符以及賦值運(yùn)算符