C實(shí)驗(yàn)1知識(shí)點(diǎn)總結(jié)1_第1頁(yè)
C實(shí)驗(yàn)1知識(shí)點(diǎn)總結(jié)1_第2頁(yè)
C實(shí)驗(yàn)1知識(shí)點(diǎn)總結(jié)1_第3頁(yè)
C實(shí)驗(yàn)1知識(shí)點(diǎn)總結(jié)1_第4頁(yè)
C實(shí)驗(yàn)1知識(shí)點(diǎn)總結(jié)1_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)在計(jì)算機(jī)的存儲(chǔ)以二進(jìn)制補(bǔ)碼表示。原碼補(bǔ)碼各種數(shù)據(jù)類(lèi)型及存儲(chǔ)方式原碼補(bǔ)碼題目通常和類(lèi)型轉(zhuǎn)換放在一起使用。大端小端根據(jù)計(jì)算機(jī)系統(tǒng)的不同?;绢?lèi)型的存儲(chǔ)方式分為大端模式和小端模式。小端模式:如intel、arm。特點(diǎn):低字節(jié)在低地址。大端模式:如powerpc。特點(diǎn):高字節(jié)在低地址。思考:如何判斷一個(gè)系統(tǒng)采用大端模式還是小端模式?轉(zhuǎn)義字符,大端小端。變量的含義,左值:等號(hào)=的左邊,代表的是一個(gè)地址例如:inta;a=3a代表變量a對(duì)應(yīng)的內(nèi)存的地址,該表達(dá)式的意思是:把整形常量3寫(xiě)在a對(duì)應(yīng)的地址開(kāi)始的四個(gè)字節(jié)里。右值:等號(hào)=的右邊,代表的是一個(gè)地址里的值。intc;c=aa代表變量a的對(duì)應(yīng)的內(nèi)存的值。該表達(dá)式的意思是:把a(bǔ)對(duì)應(yīng)的地址開(kāi)始的4個(gè)字節(jié)的內(nèi)容取出,賦給c對(duì)應(yīng)的的地址開(kāi)始的4個(gè)字節(jié)里變量的聲明和定義,及初始化定義是一種特殊的聲明,它創(chuàng)建了一個(gè)對(duì)象;聲明簡(jiǎn)單地說(shuō)明了在其他地方創(chuàng)建的對(duì)象的名字,它允許你使用這個(gè)名字。讓我們回顧一下這兩個(gè)術(shù)語(yǔ):定義只能出現(xiàn)在一個(gè)地方確定對(duì)象的類(lèi)型并分配內(nèi)存,用于創(chuàng)建新的對(duì)象,例如:intmy_array[100][2][4];聲明可以多次出現(xiàn)描述對(duì)象的類(lèi)型,用于指代其他地方定義的對(duì)象(例如在其他文件里)例:externintmy_array[][2][4];只要記住下面的內(nèi)容即可分清定義和聲明:聲明相當(dāng)于普通的聲明:他所說(shuō)明的并非自身,而是描述其他地方創(chuàng)建的對(duì)象。定義相當(dāng)于特殊的聲明:它為對(duì)象分配內(nèi)存。extern對(duì)象是聲明,告訴編譯器對(duì)象的類(lèi)型和名字,對(duì)象的內(nèi)存分配則在別處進(jìn)行。(注:這里所說(shuō)的對(duì)象與C++里的對(duì)象無(wú)關(guān),這里的對(duì)象只是跟鏈接器有關(guān)的“東西”,比如函數(shù)和變量。)變量的初始化:在定義時(shí)(即為對(duì)象分配內(nèi)存時(shí))提供一個(gè)值。比如:inta=3;是初始化。下面第二條語(yǔ)句是賦值。比如:inta;a=3;這里區(qū)分開(kāi)來(lái)是為了讓大家明白,對(duì)于有些類(lèi)型初始化和賦值操作不同。比如:數(shù)組inta[3]={1,2,3};可以。卻不能這么做inta[3];a={1,2,3};結(jié)構(gòu)體structA{inta,charb};structAa={12,’m’};可以。卻不能這么做structAa;a={12,’m’};后面在指針和結(jié)構(gòu)體時(shí),會(huì)講解復(fù)雜聲明的分析。數(shù)的進(jìn)制八進(jìn)制十進(jìn)制十六進(jìn)制的表示只是書(shū)寫(xiě)方式的不同,在內(nèi)存里都是二進(jìn)制來(lái)表示的。比如常量:023190x13在機(jī)器里的表示相同。printf和scanf等getchar()putchar()基本輸入輸出函數(shù)printf和scanf練習(xí)自增自減運(yùn)算符,自增自減的分析inta=3;intb;b=a++;基本運(yùn)算符,運(yùn)算符的優(yōu)先級(jí)sizeofsizeof是一個(gè)運(yùn)算符,用于判斷變量類(lèi)型占用多少字節(jié)在編譯時(shí)其值就已經(jīng)求出來(lái),即根據(jù)類(lèi)型來(lái)判斷它占用的內(nèi)存大小sizeof的使用練習(xí)inta=3,b=4;sizeofa+b=shorta=1;printf(“%d\n”,sizeofa++);a=char*p=NULL;printf(“%d\n”,sizeof(*p));常量:保存在只讀區(qū),值不能被修改。浮點(diǎn)數(shù)常量如:-1.03.14是以double型保存的。同時(shí),由前面介紹的浮點(diǎn)數(shù)的存儲(chǔ)方式可知,計(jì)算機(jī)里并不能精確地表示浮點(diǎn)數(shù)。例如3.14表示一個(gè)約等于3.14的浮點(diǎn)數(shù)。整數(shù)常量如-35、19是以int型保存的。字符常量如‘a(chǎn)’‘m’是以int型保存的。字符串常量是以字符’\0’結(jié)尾的char型數(shù)組保存的。例題:sizeof(1.0)=sizeof(1)=sizeof(‘a(chǎn)’)=sizeof(“ab”)=運(yùn)算中類(lèi)型轉(zhuǎn)換及練習(xí)隱式類(lèi)型轉(zhuǎn)換:當(dāng)操作符的操作數(shù)類(lèi)型不一致是會(huì)發(fā)生類(lèi)型轉(zhuǎn)換。它負(fù)責(zé)把兩個(gè)不同的操作數(shù)類(lèi)型轉(zhuǎn)換成同一種普通類(lèi)型,轉(zhuǎn)換后的類(lèi)型通常就是結(jié)果類(lèi)型。為什么有類(lèi)型轉(zhuǎn)換?整形提升:char、shortint和位段類(lèi)型(無(wú)論signed或unsigned)以及枚舉類(lèi)型將被提升為int,前提是int能夠完整地容納原來(lái)的數(shù)據(jù),否則將被轉(zhuǎn)換為unsignedint。float類(lèi)型在表達(dá)式中轉(zhuǎn)換為double類(lèi)型。若有整形和浮點(diǎn)數(shù),則轉(zhuǎn)換為double類(lèi)型。隱式類(lèi)型轉(zhuǎn)換總是向著精度更高,長(zhǎng)度更長(zhǎng)的方向轉(zhuǎn)換。ANSIC表示,如果編譯器能夠保證運(yùn)算結(jié)果一致,也可以省略類(lèi)型提升——這通常出現(xiàn)在表達(dá)式中有常量操作數(shù)的時(shí)候。比如:charc1,c2;c1=c1+c2;根據(jù)整形提升規(guī)則,先把每個(gè)變量的值提升為int的長(zhǎng)度,再執(zhí)行加法,然后再對(duì)運(yùn)算符進(jìn)行裁剪。如果兩個(gè)char的加法不會(huì)發(fā)生溢出,那么實(shí)際執(zhí)行時(shí)可以省略類(lèi)型提升。又如,floatf1,f2;doubled;f1=f2*d;如果編譯器可以確定用float進(jìn)行運(yùn)算的結(jié)果跟轉(zhuǎn)換為double后進(jìn)行運(yùn)算的結(jié)果一樣,那么也可以使用float來(lái)進(jìn)行乘法運(yùn)算。對(duì)于整形的賦值浮點(diǎn)數(shù)到整型的轉(zhuǎn)換會(huì)去掉小數(shù)部分,即取整后賦給整形變量。對(duì)于運(yùn)算里既有有符號(hào)也有無(wú)符號(hào),首先看,有符號(hào)能否表示所有的無(wú)符號(hào)的值,若可以,則都變成有符號(hào)的類(lèi)型,否則都變成無(wú)符號(hào)類(lèi)型。同類(lèi)型,有符號(hào)和無(wú)符號(hào)之間賦值,是內(nèi)存拷貝,即內(nèi)存內(nèi)容一樣,只是一個(gè)當(dāng)做有符號(hào)數(shù)來(lái)解讀,一個(gè)當(dāng)做無(wú)符號(hào)數(shù)解讀。inta=-1;unsignedintb=a;printf(“a%xb%x\n”,a,b);長(zhǎng)的賦給短的類(lèi)型,直接進(jìn)行截?cái)嗵幚?。短的賦給長(zhǎng)的類(lèi)型,根據(jù)短的類(lèi)型是否為有符號(hào)的。若為有符號(hào)的,符號(hào)位擴(kuò)展,賦給長(zhǎng)類(lèi)型。若為無(wú)符號(hào)的,高字節(jié)填0,賦給長(zhǎng)類(lèi)型的intmain(){inta=0x1280;charb=a;unsignedcharch=a;charc=128;unsignedchard=128;intm=c;intn=d;/*用printf打印上面的值*/ return0;}例如:intmain(){ inta=-20; unsignedcharch=6; if(a+ch>0) printf(“a+ch>0\n”); else printf(“a+ch<=0\n”); return0;}例如:intmain(){chara[1000];inti;for(i=0;i<1000;i++) a[i]=-1-i;printf(“%d\n”,strlen(a));return0;}強(qiáng)制類(lèi)型轉(zhuǎn)換,即顯式類(lèi)型轉(zhuǎn)換。inta=3;doubleb=(doule)a;把a(bǔ)的值轉(zhuǎn)換成double類(lèi)型的格式然后賦值給b。注意:無(wú)論隱式還是顯式類(lèi)型轉(zhuǎn)換都沒(méi)有改變?cè)?lèi)型(如這里的變量a)的內(nèi)容。另一個(gè)會(huì)發(fā)生隱式類(lèi)型轉(zhuǎn)換的地方就是參數(shù)傳遞。在ANSIC中,若沒(méi)有使用適當(dāng)?shù)暮瘮?shù)原型(即聲明),類(lèi)型提升便會(huì)發(fā)生。在被調(diào)用函數(shù)的內(nèi)部,提升后的參數(shù)被裁減為原先聲明的大小。這就是為什么單個(gè)的printf格式符字串%d能適用于幾個(gè)不同類(lèi)型,shortchar或int而不論實(shí)際傳遞的是上述那種類(lèi)型。因?yàn)閷?duì)于%d,printf總是從內(nèi)存中取4個(gè)字節(jié),并按有符號(hào)整形輸出。這是因?yàn)樵谌鄙俑嘈畔⒌那闆r下(printf的形參是可變參數(shù)),printf假定它是int類(lèi)型的。因此對(duì)于longlong型,除非使用%ld,否則不能打印出正常的信息。----------------------------下次課-----------------------循環(huán)、分支跳轉(zhuǎn)語(yǔ)句、逗號(hào)運(yùn)算符和條

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論