C語(yǔ)言基礎(chǔ)必會(huì)的常量和變量

對(duì)于 C 語(yǔ)言的學(xué)習(xí),必須的有一個(gè)標(biāo)準(zhǔn):以能否編譯通過,運(yùn)行出結(jié)果為準(zhǔn),相信我,目前市場(chǎng)上面主流的編譯器都是沒有問題,編譯不通過,第一想法,是程序的問題,而不是編譯器的問題,先把這個(gè)思想灌輸給大家
? ? ? ? ? ? ? ? ? ? ? 常量
常量:寫 C 程序的時(shí)候,在源程序文件中表達(dá)不變的量的各種 “合法” 的書寫方式
1、整型(int、short、long)
A、十進(jìn)制:是以數(shù)字 0-9 組成的整數(shù),eg:123、5、0、-23 等
B、八進(jìn)制:是以數(shù)字 0-7 組成,并且是以 0 開頭的整數(shù),eg:014、-012
C、十六進(jìn)制:是以 0-9 和 a-f/A-F 組成,以 0x 或者 0X 開頭額整數(shù),eg:0x41、0XAc
2、浮點(diǎn)型(float、double)
在 32 位系統(tǒng)下,默認(rèn)浮點(diǎn)類型為:float
在 64 位系統(tǒng)下,默認(rèn)浮點(diǎn)類型為:double
科學(xué)計(jì)數(shù)法:aeb,其中 a 必須是整型或者小數(shù),b 必須是整型,e 可以用 E,eg:3e-2 的意思是:3 * 10^-2 = 0.03
3、字符常量
A、可以寫字符:'A'、'0'、'a'
B、可以直接描述其ASCII碼:65、32、97 (下面普及 ASCII 碼)
C、八進(jìn)制、十六進(jìn)制均可以表示字符常量,分別為:'\ '、'\x '
D、轉(zhuǎn)義字符:就是針對(duì)有歧義的字符,避免出現(xiàn)二義性,C 語(yǔ)言引入了一個(gè)機(jī)制:在 \ 的后面, 寫一個(gè)字符,就可以表達(dá)特定的字符本身含義
eg:' <==> '\'' ,這樣才能表示出是一個(gè)3單引號(hào)的意思
\ <==> '\\',這樣才能表示出一個(gè) \ 的意思
4、字符串常量:在" "里所表達(dá)的都是字符串常量
eg:"ABC"、"\x41\x42\x43" (十六進(jìn)制的字符串常量,其實(shí)只有 3 個(gè)字符)
字符串長(zhǎng)度:不包括 " ,只數(shù)字符個(gè)數(shù)
"":長(zhǎng)度為 0 的字符串叫做,空串
" ":長(zhǎng)度為 1 的空格串
ASCII碼知識(shí)普及:
在計(jì)算機(jī)中,像漢字、字符是不可能存儲(chǔ)的,計(jì)算機(jī)只認(rèn)識(shí) 0 和 1,對(duì)于字符,計(jì)算機(jī)是通過點(diǎn)陣矩陣進(jìn)行存儲(chǔ)(一個(gè)英文字符將對(duì)應(yīng)一個(gè)點(diǎn)陣信息),保存一個(gè)英文字符的點(diǎn)陣信息,需要 2 字節(jié)的存儲(chǔ)空間
在計(jì)算機(jī)中,對(duì)字符的管理,是通過編號(hào)進(jìn)行的,編號(hào)的三個(gè)原則:
A、從 0 開始編號(hào)
B、連續(xù)編號(hào)
C、用二進(jìn)制編號(hào)
對(duì)英文字符的點(diǎn)陣信息使用一個(gè)字節(jié)的低 7 位進(jìn)行編號(hào),這個(gè)編號(hào)就叫做:ASCII 碼
' ' (32):空格的 ASCII 碼是 32
'0' (48):字符 0 的 ASCII 碼是48
'A' (65):字符 A 的 ASCII 碼是65
'a' (97):字符 a 的 ASCII 碼是97
ASCII 碼 就是字符所對(duì)應(yīng)的編號(hào),看到 ASCII 碼就等價(jià)于這個(gè)編號(hào)(數(shù)字),字符即數(shù)字
字符零:'0' ==> 48?
零:0 ==> 0 ==>'\0',這個(gè)是真正的 0
對(duì)于字符的大小比較,或者是字符串的大小比較,其實(shí)都是對(duì)其 ASCII 碼進(jìn)行比較,換為相應(yīng)的編號(hào),做減法即可
關(guān)于全角和半角:全角實(shí)質(zhì)上就是中文點(diǎn)陣,占 2 字節(jié),半角就是英文點(diǎn)陣,也就是 ASCII 碼,占 1 字節(jié),在 C 語(yǔ)言程序設(shè)計(jì)中,只能使用英文的標(biāo)點(diǎn),不得使用中文標(biāo)點(diǎn)
? ? ? ? ? ? ? ? ? ? ? 變量
本質(zhì):內(nèi)存中一段連續(xù)的存儲(chǔ)空間,空間即變量
計(jì)算機(jī)表達(dá)信息的最小物理單位:一個(gè)二進(jìn)制位(比特 bit)
1B = 8bit
1KB = 1024B = 2^10B
1MB = 1024KB = 2^20B
1GB = 1024MB = 2^30B
對(duì)于內(nèi)存的理解:
A、內(nèi)存是由多個(gè)字節(jié)組成的一維、線性、連續(xù)存儲(chǔ)空間
B、字節(jié)是內(nèi)存分配存儲(chǔ)空間的基本單位
C、對(duì)于內(nèi)存中的多個(gè)字節(jié),通過對(duì)字節(jié)(也就是內(nèi)存空間 1B)進(jìn)行唯一性的編號(hào)來管理
D、參與字節(jié)編號(hào)的二進(jìn)制位數(shù),將決定這個(gè)計(jì)算機(jī)所能管理的內(nèi)存大小
變量的三個(gè)要素:
變量名稱:每個(gè)變量都必須起一個(gè)英文名,變量名稱要能很清晰的代表其所表達(dá)的意思,eg:成績(jī),用變量名:score
命名原則:
A、必須以字母或者下劃線(_)開頭
B、只能由字母、數(shù)字、下劃線字符組成
C、不能使用 "關(guān)鍵字" / 起名
D、C 語(yǔ)言區(qū)分大小寫
變量類型:決定了該變量在內(nèi)存中的大?。ㄗ止?jié)數(shù))
變量的值:對(duì)該變量空間中進(jìn)行一系列運(yùn)算后,所得到的結(jié)果
定義變量的本質(zhì):申請(qǐng)存儲(chǔ)空間,變量的類型在定義時(shí)被確定,其終生不會(huì)改變,在標(biāo)準(zhǔn) C 下面,變量必須先定義,后使用,定義變量的語(yǔ)句必須在所有的有效語(yǔ)句之前,且定義變量不賦值,默認(rèn)為垃圾值
int a = 0; 定義了一個(gè) 4 字節(jié)的存儲(chǔ)空間,且初始值為 0,在內(nèi)存角度,這 4 個(gè)字節(jié)緊挨著,也就是每個(gè)字節(jié)空間都為0x00,其十六進(jìn)制為:0x00000000,數(shù)據(jù)類型和表達(dá)式下篇見。。。
注意:常量和變量所占的內(nèi)存空間是不一樣的,一般常量在常量區(qū),變量分配的空間在棧上,具體的內(nèi)存四區(qū)有時(shí)間可以寫