一、整數(shù)在內(nèi)存中的存儲(chǔ)
關(guān)于整數(shù)在內(nèi)存中的存儲(chǔ)形式,在博主之前寫的文章里已經(jīng)介紹了!友友們可以去點(diǎn)下面鏈接去看,這里就不過多介紹。
C語言:進(jìn)制的轉(zhuǎn)換以及原碼、反碼、補(bǔ)碼
我們以整型在內(nèi)存中的存儲(chǔ)形式為基礎(chǔ),探究后面的內(nèi)容:整型提升與截?cái)唷⑺銛?shù)轉(zhuǎn)換、大小端字節(jié)序和字節(jié)序判斷、強(qiáng)制類型轉(zhuǎn)換的原理、浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)??!
二、整型提升與截?cái)?/h2>
C語?中,整型算術(shù)運(yùn)算總是?少以缺省(缺省就是默認(rèn)的意思)整型類型的精度來進(jìn)?的。
為了獲得這個(gè)精度,表達(dá)式中的字符和短整型操作數(shù)在使?之前被轉(zhuǎn)換為普通整型,這種轉(zhuǎn)換稱為整型提升。
2.1 整型提升的意義
? ? ? 表達(dá)式的整型運(yùn)算要在CPU的相應(yīng)運(yùn)算器件內(nèi)執(zhí)?,CPU內(nèi)整型運(yùn)算器(ALU)的操作數(shù)的字節(jié)?度? 般就是int的字節(jié)?度,同時(shí)也是CPU的通?寄存器的?度。
? ? ?因此,即使兩個(gè)char類型的相加,在CPU執(zhí)?時(shí)實(shí)際上也要先轉(zhuǎn)換為CPU內(nèi)整型操作數(shù)的標(biāo)準(zhǔn)?度。
? ? ?通?CPU(general-purpose CPU)是難以直接實(shí)現(xiàn)兩個(gè)8?特字節(jié)直接相加運(yùn)算(雖然機(jī)器指令中 可能有這種字節(jié)相加指令)。所以,表達(dá)式中各種?度可能?于int?度的整型值,都必須先轉(zhuǎn)換為 int或unsigned int,然后才能送?CPU去執(zhí)?運(yùn)算。
? ? ? 也就是說,假設(shè)c1和c2是char類型,那么要先將要實(shí)現(xiàn)c1+c2,就需要對(duì)c1和c1進(jìn)行整型提升之后進(jìn)行運(yùn)算,那么假設(shè)我們用char類型的c3去接收c1和c2的結(jié)果,由于char類型是一個(gè)字節(jié),所以會(huì)發(fā)生截?cái)唷?/strong>截?cái)嘀?,只?huì)保留低位的字節(jié)存儲(chǔ)在c3中??!
?2.2 如何進(jìn)行整體提升呢?
1. 有符號(hào)整數(shù)提升是按照變量的數(shù)據(jù)類型的符號(hào)位來提升的
2. ?符號(hào)整數(shù)提升,?位補(bǔ)0
2.3 如何進(jìn)行截?cái)嗄兀?/h3>
當(dāng)長字節(jié)的數(shù)據(jù)類型用短字節(jié)的數(shù)據(jù)類型進(jìn)行存儲(chǔ)時(shí),會(huì)發(fā)生截?cái)啵?strong>截?cái)?/strong>就是通過簡單地將高位丟棄,保存低位來實(shí)現(xiàn)
補(bǔ)充一條知識(shí):
C語言規(guī)定,char類型默認(rèn)是否帶有正負(fù)號(hào),由當(dāng)前的系統(tǒng)決定,也就是說char類型可能等價(jià)于signed char也可能等價(jià)于unsigned char,這一點(diǎn)與int不同,int必然等價(jià)于signed int,但是在大多數(shù)的編譯器環(huán)境下,包括當(dāng)前的vs,char等價(jià)于signed char!
下面我將通過一道例題來深入解析整型提升和截?cái)嗟娜^程?。?!
?大家可以看我的注釋,寫的比較詳細(xì)!? ?
? ? ? 我們會(huì)發(fā)現(xiàn),當(dāng)char類型進(jìn)行運(yùn)算時(shí),會(huì)進(jìn)行整型提升,而當(dāng)計(jì)算的結(jié)果保存在char類型時(shí),會(huì)對(duì)整型提升后的結(jié)果進(jìn)行截?cái)?,只保留低位?/span>
三、算數(shù)轉(zhuǎn)換??
? ? ? 明白了整型提升與截?cái)?,我們考慮到了計(jì)算字符和短整型操作數(shù)使用前的情況,那如果操作數(shù)類型都大于等于4個(gè)字節(jié)呢???
? ? ?如果某個(gè)操作符的各個(gè)操作數(shù)屬于不同的類型,那么除非其中一個(gè)操作數(shù)轉(zhuǎn)換為另一個(gè)操作數(shù)的類型,否則操作將無法進(jìn)行。那么為了判別兩個(gè)操作數(shù)轉(zhuǎn)換的優(yōu)先級(jí),設(shè)置了如下層次體系,該體系杯成為尋常算數(shù)轉(zhuǎn)換。
long double
double
float
unsigned long int
long int
unsigned int
int
? ? ? 類型排名較低的操作數(shù)應(yīng)該轉(zhuǎn)換成類型排名高的操作數(shù)進(jìn)行計(jì)算
比方說float a+int b,那計(jì)算前會(huì)先把b轉(zhuǎn)換成float類型運(yùn)算
如果是float a +double b,那計(jì)算前會(huì)先把a(bǔ)轉(zhuǎn)換成double類型運(yùn)算
四、大小端字節(jié)序和字節(jié)序判斷
當(dāng)我們了解了整數(shù)在內(nèi)存中存儲(chǔ)后,我們調(diào)試看?個(gè)細(xì)節(jié):
調(diào)試的時(shí)候,我們可以看到在a中的 0x11223344 這個(gè)數(shù)字是按照字節(jié)為單位,倒著存儲(chǔ)的。這是為什么呢?下面就要講到大小端概念!
4.1 什么是大小端呢?
? ? ? ? ?“大端”和“小端”可以追溯到1726年的Jonathan Swift的《格列佛游記》,其中一篇講到有兩個(gè)國家因?yàn)槌噪u蛋究竟是先打破較大的一端還是先打破較小的一端而爭執(zhí)不休,甚至爆發(fā)了戰(zhàn)爭。1981年10月,Danny Cohen的文章《論圣戰(zhàn)以及對(duì)和平的祈禱》(On holy wars and a plea for peace)將這一對(duì)詞語引入了計(jì)算機(jī)界。這么看來,所謂大端和小端,也就是big-endian和little-endian,其實(shí)是從描述雞蛋的部位而引申到計(jì)算機(jī)地址的描述,也可以說,是從一個(gè)俚語衍化來的計(jì)算機(jī)術(shù)語。
這個(gè)術(shù)語引入的目的是什么呢?
計(jì)算機(jī)中,內(nèi)存被分為了一個(gè)個(gè)內(nèi)存單元,每個(gè)內(nèi)存單元的大小是1個(gè)字節(jié),所以當(dāng)我們需要存儲(chǔ)數(shù)據(jù)超過一個(gè)字節(jié)時(shí),就涉及到了存儲(chǔ)順序的問題,根據(jù)存儲(chǔ)順序的不同,我們分為了大端字節(jié)序存儲(chǔ)和小端字節(jié)序存儲(chǔ)的概念。
?端(存儲(chǔ))模式:是指數(shù)據(jù)的低位字節(jié)內(nèi)容保存在內(nèi)存的?地址處,?數(shù)據(jù)的?位字節(jié)內(nèi)容,保存 在內(nèi)存的低地址處。
?端(存儲(chǔ))模式:是指數(shù)據(jù)的低位字節(jié)內(nèi)容保存在內(nèi)存的低地址處,?數(shù)據(jù)的?位字節(jié)內(nèi)容,保存 在內(nèi)存的?地址處。
? ? ? ?這樣直接記憶概念可能有點(diǎn)困難,那有沒有更為簡單的記憶呢?
? ? ? ?在裘宗燕翻譯的《程序設(shè)計(jì)實(shí)踐》里,這對(duì)術(shù)語并沒有翻譯為“大端”和小端,而是“高尾端”和“低尾端”,這就好理解了:如果把一個(gè)數(shù)看成一個(gè)字符串,比如11223344看成"11223344",末尾是個(gè)'\0','11'到'44'個(gè)占用一個(gè)存儲(chǔ)單元,那么它的尾端很顯然是44,前面的高還是低就表示尾端放在高地址還是低地址,它在內(nèi)存中的放法非常直觀,如下圖:
? ? ? 我們可以利用高尾端和低尾端來記住大端小端的概念,因?yàn)槲捕说臄?shù)字對(duì)應(yīng)的就是低位字節(jié),如果尾端的數(shù)字在較高地址處,就是高尾端,就是大端,也就是低位字節(jié)被保存在高地址處。同理,如果尾端的數(shù)字在較低地址處,就是低尾端,也就是低位字節(jié)被保存在低地址處。
4.2 為什么有大小端
? ? ? ? ?為什么會(huì)有??端模式之分呢?這是因?yàn)樵谟?jì)算機(jī)系統(tǒng)中,我們是以字節(jié)為單位的,每個(gè)地址單元都 對(duì)應(yīng)著?個(gè)字節(jié),?個(gè)字節(jié)為8 bit 位,但是在C語?中除了8 bit 的 char 之外,還有16 bit 的 short 型,32 bit 的 long 型(要看具體的編譯器),另外,對(duì)于位數(shù)?于8位的處理器,例如16位 或者32位的處理器,由于寄存器寬度?于?個(gè)字節(jié),那么必然存在著?個(gè)如何將多個(gè)字節(jié)安排順序的問題。因此就導(dǎo)致了?端存儲(chǔ)模式和?端存儲(chǔ)模式。
? ? ? ?例如:?個(gè) 16bit 的 short 型 x ,在內(nèi)存中的地址為 0x0010 , x 的值為 0x1122 ,那么 0x11 為?字節(jié), 0x22 為低字節(jié)。對(duì)于?端模式,就將 0x11 放在低地址中,即 0x0010 中, 0x22 放在?地址中,即 0x0011 中。?端模式,剛好相反。我們常?的 X86 、x64結(jié)構(gòu)是?端模式,? KEIL C51 則為?端模式。很多的ARM,DSP都為?端模式。有些ARM處理器還可以由硬件來選擇是?端模式還是小端模式。
4.3 編寫一個(gè)程序判斷當(dāng)前機(jī)器的字節(jié)序
4.4?大小端誰好誰壞?
小端模式:
? ? ? ? ? ? ? ? ? 1、強(qiáng)制類型轉(zhuǎn)換數(shù)據(jù)不需要調(diào)整字節(jié)內(nèi)容。(在強(qiáng)制類型轉(zhuǎn)換原理會(huì)解釋)
? ? ? ? ? ? ? ? ? 2、CPU做數(shù)值運(yùn)算時(shí)從內(nèi)存中依順序依次從低位到高位取數(shù)據(jù)進(jìn)行運(yùn)算,直到最后刷? 新最高位的符號(hào)位,這樣的運(yùn)算方式會(huì)更高效
大端模式:
? ? ? ? ? ? ? ? ? ? ? 符號(hào)位判斷固定為第一個(gè)字節(jié),容易判斷正負(fù),便于人類閱讀。
總結(jié):大小端沒有誰更優(yōu)更劣,各種優(yōu)點(diǎn)就是對(duì)方劣勢(shì)。
五、強(qiáng)制類型轉(zhuǎn)換的原理
5.1 int數(shù)據(jù)類型強(qiáng)轉(zhuǎn)char數(shù)據(jù)類型
int數(shù)據(jù)類型強(qiáng)轉(zhuǎn)char數(shù)據(jù)類型的原理就是字節(jié)截?cái)啵?/span>截?cái)?/strong>就是通過簡單地將高位丟棄,保存低位來實(shí)現(xiàn)
5.2 char數(shù)據(jù)類型強(qiáng)轉(zhuǎn)int數(shù)據(jù)類型
char數(shù)據(jù)類型強(qiáng)轉(zhuǎn)int數(shù)據(jù)類型的原理就是整型提升!
1. 有符號(hào)整數(shù)提升是按照變量的數(shù)據(jù)類型的符號(hào)位來提升的
2. ?符號(hào)整數(shù)提升,?位補(bǔ)0
5.3 大小端和強(qiáng)制類型轉(zhuǎn)換的關(guān)系
? ? ? 大小端(endianness)是指多字節(jié)數(shù)據(jù)在存儲(chǔ)時(shí)的字節(jié)順序。在C語言中,賦值操作是不受大小端影響的。
? ? ? 其中截?cái)嗍峭ㄟ^簡單地將高位丟棄來實(shí)現(xiàn)的,而與數(shù)據(jù)存儲(chǔ)的字節(jié)順序無關(guān) 。
? ? ? 既然無關(guān),那為什么說小端的優(yōu)勢(shì)就是強(qiáng)制類型轉(zhuǎn)換數(shù)據(jù)不需要調(diào)整字節(jié)內(nèi)容??
? ? ?雖然截?cái)嗯c數(shù)據(jù)存儲(chǔ)的字節(jié)順序(大小端)無關(guān),但是大小端對(duì)于截?cái)嘈适遣灰粯拥?,假設(shè)在小端模式下把int的4字節(jié)強(qiáng)制轉(zhuǎn)換成short的2字節(jié)時(shí),就直接把int數(shù)據(jù)存儲(chǔ)的前兩個(gè)字節(jié)給short就行,因?yàn)槠淝皟蓚€(gè)字節(jié)剛好就是最低的兩個(gè)字節(jié),符合轉(zhuǎn)換邏輯。
? ? ?這就是說明了大小端對(duì)截?cái)嘈视杏绊懀@就好比化學(xué)反應(yīng)加了催化劑一樣,加與不加的結(jié)果是一樣,但是速度不一樣??!
5.4?相同字節(jié)數(shù)據(jù)類型的強(qiáng)制類型轉(zhuǎn)換
? ? 上述講的都是不同字節(jié)的數(shù)據(jù)類型的強(qiáng)轉(zhuǎn),那如果是相同數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換,比如說int強(qiáng)轉(zhuǎn)float,那恰好都是4個(gè)字節(jié),就不需要補(bǔ)位,也不需要截?cái)?。那他們?qiáng)轉(zhuǎn)之后會(huì)有區(qū)別嗎??
? ? 我們來看下面這個(gè)代碼
我們會(huì)發(fā)現(xiàn),當(dāng)我們用int類型存儲(chǔ)9,再用float類型取出9時(shí),得到的結(jié)果是0.000000,而用float類型去存儲(chǔ)9.0時(shí),用int類型取出來時(shí)1091567616?
? ? ?按道理來說,這兩種類型都是四個(gè)字節(jié),不會(huì)出現(xiàn)截?cái)嗪驼吞嵘鎯?chǔ)的內(nèi)容并沒有發(fā)生改變,為什么會(huì)出現(xiàn)這樣的情況??
? ?原因就是因?yàn)椋?span style="color:#fe2c24;">float類型和int類型的存儲(chǔ)方式不一樣??!!下面將介紹浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)!
六、浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)
? ? ? ?常?的浮點(diǎn)數(shù):3.14159、1E10(E表示底數(shù)是10)等,浮點(diǎn)數(shù)家族包括: float(4字節(jié))、double(8字節(jié))、long double(8字節(jié)) 類型。
? ? ? ?浮點(diǎn)數(shù)表?的范圍:float.h中定義
6.1 浮點(diǎn)數(shù)的存儲(chǔ)形式
? ??根據(jù)國際標(biāo)準(zhǔn)IEEE(電?和電??程協(xié)會(huì)) 754,任意?個(gè)?進(jìn)制浮點(diǎn)數(shù)V可以表?成下?的形式:
為什么是這樣的形式呢?這就跟科學(xué)計(jì)數(shù)法有關(guān)系。下面通過一個(gè)例子來說明:
10進(jìn)制的5.5應(yīng)該怎么轉(zhuǎn)換成二進(jìn)制呢?
5變成2進(jìn)制是101 ,0.5變成2進(jìn)制是2^-1,所以可以其二進(jìn)制形式可以寫成101.1,用科學(xué)計(jì)數(shù)法來表示就是1.011*2^2,類比上圖的表示形式我們可以發(fā)現(xiàn),此時(shí)S=0,M=1.011,E=2.
既然浮點(diǎn)數(shù)可以寫成科學(xué)計(jì)數(shù)法的形式,并且可以算出對(duì)應(yīng)的S M E,所以我們實(shí)際上只需要在內(nèi)存中將S M E 存儲(chǔ)起來即可!!
IEEE 754規(guī)定:
對(duì)于32位的浮點(diǎn)數(shù),最?的1位存儲(chǔ)符號(hào)位S,接著的8位存儲(chǔ)指數(shù)E,剩下的23位存儲(chǔ)有效數(shù)字M 對(duì)于64位的浮點(diǎn)數(shù),最?的1位存儲(chǔ)符號(hào)位S,接著的11位存儲(chǔ)指數(shù)E,剩下的52位存儲(chǔ)有效數(shù)字M
6.2 浮點(diǎn)數(shù)存的過程
??IEEE 754對(duì)有效數(shù)字M和指數(shù)E,還有?些特別規(guī)定。
6.2.1 M
? ? ? 前?說過, 1≤M<2 ,也就是說,M可以寫成 1.xxxxxx 的形式,其中xxxxxx表??數(shù)部分。 IEEE 754規(guī)定,在計(jì)算機(jī)內(nèi)部保存M時(shí),默認(rèn)這個(gè)數(shù)的第?位總是1,因此可以被舍去,只保存后?的 xxxxxx部分。?如保存1.01的時(shí)候,只保存01,等到讀取的時(shí)候,再把第?位的1加上去。這樣做的? 的,是節(jié)省1位有效數(shù)字(這樣的話精度會(huì)更高?。。?/strong>。以32位浮點(diǎn)數(shù)為例,留給M只有23位,將第?位的1舍去以后,等于可以保存24位有效數(shù)字。
6.2.2 E
? ???于指數(shù)E,情況就?較復(fù)雜。
? ? ?先,規(guī)定E為?個(gè)?符號(hào)整數(shù)(unsigned int)
? ? ? ?這意味著,如果E為8位,它的取值范圍為0~255;如果E為11位,它的取值范圍為0~2047。但是,我 們知道,科學(xué)計(jì)數(shù)法中的E是可以出現(xiàn)負(fù)數(shù)的,所以IEEE 754規(guī)定,存?內(nèi)存時(shí)E的真實(shí)值必須再加上 ?個(gè)中間數(shù),對(duì)于8位的E,這個(gè)中間數(shù)是127;對(duì)于11位的E,這個(gè)中間數(shù)是1023。?如,2^10的E是 10,所以保存成32位浮點(diǎn)數(shù)時(shí),必須保存成10+127=137,即10001001。
6.3 浮點(diǎn)數(shù)取的過程
6.3.1 E不全為0或不全為1(常規(guī)方式)
? ? ? 這時(shí),浮點(diǎn)數(shù)就采?下?的規(guī)則表?,即指數(shù)E的計(jì)算值減去127(或1023),得到真實(shí)值,再將有效數(shù)字M前加上第?位的1。 ?如:0.5 的?進(jìn)制形式為0.1,由于規(guī)定正數(shù)部分必須為1,即將?數(shù)點(diǎn)右移1位,則為1.0*2^(-1),其 階碼為-1+127(中間值)=126,表?為01111110,?尾數(shù)1.0去掉整數(shù)部分為0,補(bǔ)?0到23位00000000000000000000000
則其?進(jìn)制表示形式為:0? ? ?01111110? ? ? 00000000000000000000000
6.3.2 E全為0
? ? ?這時(shí),浮點(diǎn)數(shù)的指數(shù)E等于1-127(或者1-1023)即為真實(shí)值,有效數(shù)字M不再加上第?位的1,?是還 原為0.xxxxxx的?數(shù)。這樣做是為了表?±0,以及接近于0的很?的數(shù)字。
6.3.3 E全為1
? ??這時(shí),如果有效數(shù)字M全為0,表?±?窮?(正負(fù)取決于符號(hào)位s)
6.4 題目解析
? ?明白了浮點(diǎn)數(shù)的存儲(chǔ)形式,我們就一起對(duì)5.4的那道題進(jìn)行解析
6.4.1 為什么9還原成浮點(diǎn)數(shù)變成了0.000000?
9為整型,在內(nèi)存中存儲(chǔ)為00000000 00000000 00000000 00001001
轉(zhuǎn)換為float類型后,將其按照浮點(diǎn)數(shù)形式拆分,得到第1位符號(hào)位s=0,后面8位指數(shù)位為00000000,最后23位有效數(shù)字M=000 0000 0000 0000 0000 1001
因?yàn)橹笖?shù)E全為0,所以符合E全為0的情況
?V=(-1)^0*0.00000000000000000001001*2^(-126)=1.001*2^(-146)
顯然V是一個(gè)接近于0的正數(shù),且%f占位符最多保存6位,所以打印出來就是0.000000
6.4.2 為什么浮點(diǎn)數(shù)9.0,用整數(shù)打印是1091567616?
首先浮點(diǎn)數(shù)9.0等于二進(jìn)制的1001.0,換成科學(xué)計(jì)數(shù)法就是1.001*2^3
即S=0,M=1.001,E=3
首先是第一位符號(hào)位S=0,有效數(shù)字M等于001后面再加20個(gè)0,湊滿23位,指數(shù)E等于3+127=130,即10000010
按照S+E+M的方式寫成二進(jìn)制就是
0 10000010 001 0000 0000 0000 0000 0000
轉(zhuǎn)換成10進(jìn)制就是就是1091567616
6.5 浮點(diǎn)數(shù)的存儲(chǔ)可能有什么問題??
6.5.1 浮點(diǎn)數(shù)在內(nèi)存中可能存在部分?jǐn)?shù)無法精確保存
對(duì)于float(double)類型來說,留給M的只有23(52)位,有可能存在某些數(shù)及時(shí)將全部位都用上了,都湊不齊,下面有個(gè)例子99.7
6.5.2 double類型的精度比float類型高
double類型留給E和M的位數(shù)都更大,所以相對(duì)來說精度會(huì)更高!
6.5.3 兩個(gè)浮點(diǎn)數(shù)比較大小時(shí),直接使用==可能會(huì)存在問題。
? ? ? ?因?yàn)楦↑c(diǎn)數(shù)在內(nèi)存中有時(shí)候無法精確保存,所以使用==可能會(huì)存在問題,所以一般來說,我們會(huì)設(shè)置一個(gè)我們可以接收的精度,如果他們之間的差距在這個(gè)精度之內(nèi),就把他們視為相等。
比如我想要判斷浮點(diǎn)數(shù)a==5.6,假設(shè)我們?cè)O(shè)置的精度是0.000001,那么我們可以將if(a==5.6)改寫成if(abs(f-5.6)<=0.000001)。
? ? ?關(guān)于浮點(diǎn)數(shù)的比較在 《C語言深度解剖》這本書中有介紹。
七、signed char和unsigned char的取值范圍
char類型是1個(gè)字節(jié),一共是8個(gè)比特位
? ? ? ? 對(duì)于signed char來說,首位是符號(hào)位,后面7位是數(shù)值位,所以最大應(yīng)該是01111111即127,最小應(yīng)該位11111111即-127,但是由于10000000和00000000一個(gè)表示-0,一個(gè)表示0,為了避免0的兩種表示形式,將10000000定為-128,所以signed char的取值范圍是-128~127。
? ? ? 對(duì)于unsigned char來說,8個(gè)位都是數(shù)值位,所以最大為11111111即255,最小為00000000即0,所以unsigned char類型的取值范圍是0~255.
八、進(jìn)制數(shù)的輪回
? ? ? ?這是一個(gè)做題技巧,以char類型為例,我們從00000000開始舉出char類型的所以可能性
00000000、00000001、000000010………………01111111、10000000、10000001……11111111
? ? ?從左到右是0 1 2 3 4 5 …………當(dāng)?shù)竭_(dá)011111111達(dá)到最大正數(shù)127,再+1得到10000000是最大負(fù)數(shù)-128 再往下加就是-127 -126……………………一直到-1。
? ? ? ?我們發(fā)現(xiàn)從00000000開始,不斷+1是從0-127? ?127跳到-128? ? ?-128--1? ?這是一個(gè)輪回。11111111再+時(shí)變成100000000 此時(shí)達(dá)到9位,首位丟失,所以又是00000000即0,所以如果一直+1,會(huì)一直按照0-127??-128--1 這樣循環(huán)下去??!
九、經(jīng)典例題
文章來源:http://www.zghlxwxcb.cn/news/detail-817124.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-817124.html
到了這里,關(guān)于C語言:數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!