




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)類型、運(yùn)算符與表達(dá)式數(shù)據(jù)類型1.常量與變量2.運(yùn)算符與表達(dá)式3.標(biāo)準(zhǔn)輸入/輸出4.數(shù)學(xué)函數(shù)5.2.1數(shù)據(jù)類型人們通常將各種數(shù)據(jù)如數(shù)值、文本、聲音和圖形等輸入并存儲(chǔ)到計(jì)算機(jī)中,并進(jìn)行相應(yīng)處理。C語(yǔ)言采用把要處理的數(shù)據(jù)對(duì)象劃分為一些類型,每個(gè)類型是一個(gè)數(shù)據(jù)值的集合。C語(yǔ)言數(shù)據(jù)類型枚舉類型(enum)基本類型數(shù)據(jù)類型構(gòu)造類型指針類型空類型(void)整型(int)實(shí)型(浮點(diǎn)型)字符型(char)結(jié)構(gòu)體(struct)共用體(union)單精度實(shí)型(float)雙精度實(shí)型(double)數(shù)組2.1.1基本數(shù)據(jù)類型C語(yǔ)言的基本數(shù)據(jù)類型包括整型、實(shí)型、字符型和枚舉類型。沒有小數(shù)部分的數(shù)就是整數(shù)類型,而加了小數(shù)點(diǎn)的數(shù)則是實(shí)型(也稱浮點(diǎn)數(shù)類型),字母或者符號(hào)更廣泛地說是字符類型。對(duì)人來說,它們的區(qū)別在于書寫形式,而對(duì)于計(jì)算機(jī),它們的存儲(chǔ)方式是不同的。1.整型在C語(yǔ)言中,整型是比較常用的數(shù)據(jù)類型。針對(duì)不同的用途,C語(yǔ)言提供了多種整數(shù)類型的選擇,可分為基本整型(int,簡(jiǎn)稱整型),短整型(short)和長(zhǎng)整型(long)。上述類型又分為有符號(hào)型(signed)和無符號(hào)型(unsigned),即數(shù)值是否可以取負(fù)值,構(gòu)成了6種不同的整數(shù)類型。整型數(shù)據(jù)分類類型名稱類型說明符所占字節(jié)數(shù)取值范圍有符號(hào)基本整型[signed]int4-2147483648~2147483647-232-1~232-1-1有符號(hào)短整型[signed]short[int]2-32768~32767-216-1~216-1-1有符號(hào)長(zhǎng)整型[signed]long[int]4-2147483648~2147483647-232-1~232-1-1無符號(hào)基本整型unsigned[int]40~42949672950~232-1無符號(hào)短整型unsignedshort[int]20~655350~216-1-1無符號(hào)長(zhǎng)整型unsignedlong[int]40~42949672950~232-12.實(shí)型C語(yǔ)言中實(shí)型也稱為浮點(diǎn)型,包括單精度實(shí)型(float)和雙精度實(shí)型(double)類型名稱類型說明符所占字節(jié)數(shù)有效數(shù)字取值范圍(絕對(duì)值)單精度實(shí)型float4約6~7位3.4×10-38~3.4×1038雙精度實(shí)型double8約15~16位1.7×10-308~1.7×103083.字符型類型說明符為char。字符型數(shù)據(jù)只占1個(gè)字節(jié),只能存放1個(gè)字符,無法存放多個(gè)字符組成的字符串,字符串的概念將在后面章節(jié)中介紹。為了處理字符,計(jì)算機(jī)使用一種數(shù)字編碼,用特定的整數(shù)表示特定的字符。應(yīng)用最廣泛的是編碼是ASCII碼(AmericaStandardCordforInformationInterchange,美國(guó)信息交換標(biāo)準(zhǔn)碼)4.枚舉型枚舉(enumeration)類型是C語(yǔ)言提供的一種用戶自定義類型。如果一個(gè)數(shù)據(jù)對(duì)象只有幾種可能的取值,可以將這些值一一列舉出來,即定義為枚舉類型。定義的格式為:enum枚舉類型名{枚舉常量1,枚舉常量2,...,枚舉常量n};2.1.2構(gòu)造數(shù)據(jù)類型C語(yǔ)言的基本數(shù)據(jù)類型并不能滿足實(shí)際應(yīng)用中的所有需求,用戶可以利用整型、實(shí)型、字符型這些基本數(shù)據(jù)類型構(gòu)造滿足需要的數(shù)據(jù)類型,即構(gòu)造類型。包括數(shù)組類型、結(jié)構(gòu)體類型和共用體類型2.1.3其它數(shù)據(jù)類型1.指針類型指針是一種特殊的數(shù)據(jù)類型,也是很重要的一種數(shù)據(jù)類型,指針的值指的是內(nèi)存中的地址值。
2.空類型
C語(yǔ)言中空類型用void表示,一般用于描述指針以及作為不返回值的函數(shù)的返回值類型。2.2常量與變量在程序所處理的各種數(shù)據(jù)中,有些數(shù)據(jù)的值在程序使用前可以預(yù)先設(shè)定并在程序運(yùn)行過程中不會(huì)發(fā)生變化,稱為常量。有的數(shù)據(jù)在程序運(yùn)行過程中可能會(huì)變化,稱為變量。兩者的區(qū)別在于數(shù)據(jù)在程序運(yùn)行過程中其值是否變化。2.2.1常量在程序運(yùn)行過程中,其值不變的量稱為常量。常量也有數(shù)據(jù)類型,在計(jì)算機(jī)內(nèi)存中,所有數(shù)據(jù)都是以二進(jìn)制形式存儲(chǔ),在C語(yǔ)言程序中,編譯器一般通過其書寫來辨認(rèn)其類型,比如3是整型,而3.00是實(shí)型。常量可以不經(jīng)說明而直接引用,另外在程序中也可定義符號(hào)常量。1.整型常量整型常量類似于數(shù)學(xué)中的整數(shù)。在C語(yǔ)言中,整型常量有十進(jìn)制、八進(jìn)制和十六進(jìn)制3種表示形式。十進(jìn)制整型數(shù):用10個(gè)數(shù)字0~9表示,開頭的數(shù)字不能是0。如368、9652等。八進(jìn)制整型數(shù):以數(shù)字0開頭,用8個(gè)數(shù)字0~7表示。如012、0654等。十六進(jìn)制整型數(shù):以0X或0x開頭(注意是數(shù)字0加字母X或x),用10個(gè)數(shù)字0~9和6個(gè)字母A~F(或a~f)表示。如0x7f、0XA6D等。注意:正整數(shù)前面的“+”號(hào)可以省略,負(fù)整數(shù)的前面必須加“-”號(hào)。
2.實(shí)型常量實(shí)型(浮點(diǎn)型)常量即數(shù)學(xué)中的實(shí)數(shù)。在C語(yǔ)言中實(shí)型常量有十進(jìn)制數(shù)和指數(shù)兩種表示形式。十進(jìn)制數(shù)形式:由數(shù)字0~9和小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))。指數(shù)形式:即科學(xué)記數(shù)法,由尾數(shù)、E(或e)和整數(shù)指數(shù)(階碼)組成,其中指數(shù)可以帶正負(fù)號(hào)。E(或e)的左邊為尾數(shù),可以是整數(shù)或?qū)崝?shù),右邊是指數(shù),指數(shù)必須為整數(shù),表示尾數(shù)乘以10的多少次方。3.字符常量字符常量是用單引號(hào)括起來的一個(gè)字符。例如‘a(chǎn)’,‘8’,‘=’,‘+’,‘?’都是合法字符常量。每個(gè)字符都有對(duì)應(yīng)的ASCII整數(shù)代碼,例如小寫字母‘a(chǎn)’的ASCII碼為97(參見ASCII碼表)。轉(zhuǎn)義字符C提供了一些特殊的符號(hào)序列,即轉(zhuǎn)義字符來表示某個(gè)字符。這些符號(hào)都不能簡(jiǎn)單地用一個(gè)字符表示,而是用單引號(hào)括起來的以反斜杠開頭的符號(hào)序列。反斜杠之后字符被轉(zhuǎn)換為另外的含義,不同于字符的原有意義,故稱為“轉(zhuǎn)義字符”。常用的轉(zhuǎn)義字符及含義轉(zhuǎn)義字符含義ASCII碼\b退格(Backspace)008\f走紙換頁(yè),跳到下一頁(yè)開頭012\n換行,跳到下一行開頭010\r回車(Return)013\t水平制表,橫向跳到下一制表位置(Tab)009\v垂直制表,豎向跳到下一制表位置011\\反斜杠(\)092\'單引號(hào)(')039\”雙引號(hào)(”)034\?問號(hào)(?)077\ooo八進(jìn)制數(shù)值,1~3位八進(jìn)制數(shù)所代表的字符(o代表一個(gè)八進(jìn)制數(shù)字)\xhh十六進(jìn)制數(shù)值,1~2位十六進(jìn)制數(shù)所代表的字符(h代表一個(gè)十六進(jìn)制數(shù)字)4.字符串常量字符串常量是由一對(duì)雙引號(hào)括起來的字符序列。例如,"Clanguageprogram"“$12.5”
都是合法的字符串常量。字符串常量與字符常量的區(qū)別字符常量是由單引號(hào)括起來,而字符串常量則是由雙引號(hào)括起來。字符常量只能表示一個(gè)字符,而字符串常量則可以包含1個(gè)或多個(gè)字符。可以將1個(gè)字符常量賦值給一個(gè)字符變量,但不能將1個(gè)字符串常量賦予一個(gè)字符變量。字符串常量可以用一個(gè)字符數(shù)組存放。字符常量在存儲(chǔ)中只占一個(gè)字節(jié),字符串常量占用的存儲(chǔ)空間的字節(jié)數(shù)等于雙引號(hào)中所包含字符個(gè)數(shù)加1。增加的一個(gè)字節(jié)用于存放字符'\0'(ASCII碼值為0)。每個(gè)字符串常量的末尾有一個(gè)結(jié)尾符'\0',稱為空字符,C語(yǔ)言以該字符作為字符串常量結(jié)束的標(biāo)志。例如"a"表示的是一個(gè)字符串常量,占用2個(gè)字節(jié);而'a'表示的是一個(gè)字符常量,只占用1個(gè)字節(jié)。如圖2-4所示。字符串中可以有轉(zhuǎn)義字符。單引號(hào)和雙引號(hào)只是字符和字符串的定界符,如果字符常量本身是單引號(hào),則要用轉(zhuǎn)義字符,如'\''。如果字符串常量中包含雙引號(hào),也要用轉(zhuǎn)義字符,如"a\"b"。5.符號(hào)常量用一個(gè)標(biāo)識(shí)符來代表一個(gè)常量,稱為符號(hào)常量。符號(hào)常量在使用前必須先定義,用宏定義的形式,其一般定義格式為:
#define標(biāo)識(shí)符常量符號(hào)常量的定義和使用舉例#include<stdio.h>#definePRICE10 //定義價(jià)格符號(hào)常量PRICE為10voidmain(){intnum,total;scanf(“%d”,&num); //輸入購(gòu)買數(shù)量
total=num*PRICE; //計(jì)算總金額
printf(“total=%d”,total);}2.2.2變量變量是指在程序運(yùn)行過程中其值可以變化的量。C語(yǔ)言要求在使用變量之前必須先進(jìn)行聲明。1.變量的聲明變量聲明的一般形式:
[變量存儲(chǔ)類型說明符]數(shù)據(jù)類型說明符變量名1[,變量名2,變量名3,…];變量聲明舉例變量聲明示例#include<stdio.h>voidmain(){inta,b; //聲明兩個(gè)整型變量a和bcharc; //聲明一個(gè)字符變量cfloatf1,f2;//聲明兩個(gè)浮點(diǎn)型變量f1,f2}2.變量的初始化在變量聲明中初始化賦值的一般格式為:[變量存儲(chǔ)類型說明符]數(shù)據(jù)類型說明符變量名1=值1[,變量名2=值2,…];變量的聲明及初始化舉例#include<stdio.h>voidmain(){/*聲明c1和c2為字符類型變量,c1初始化值分別為字符'a'、'b‘*/charc1='a',c2='b';/*聲明i,j和k為基本整型變量,i和j初始化值為20*/inti=20,j=20,k;/*聲明f1和f2為單精度類型變量,f1初始化值為3.6*/ floatf1=3.6,f2; }3.變量的使用在程序中使用變量,要考慮程序運(yùn)行的環(huán)境和變量的取值范圍,當(dāng)變量的取值超出變量類型所規(guī)定的范圍時(shí),會(huì)出現(xiàn)錯(cuò)誤的運(yùn)算結(jié)果。例整型變量的定義與使用#include<stdio.h>voidmain(){inta=-10,b=20,c;//聲明基本整型變量a、b、c,
//并對(duì)a,b初始化
unsignedk; //聲明無符號(hào)基本整型變量kscanf(“%u”,&k);//用scanf()函數(shù)給k輸入一個(gè)值
c=a+b; //將a、b的和賦值給cprintf(“c=%d,k=%u\n”,c,k); //用printf()函數(shù)輸出c、k的值
}2.3運(yùn)算符與表達(dá)式運(yùn)算符C語(yǔ)言的運(yùn)算符非常豐富,可按不同方式分類:根據(jù)所需操作數(shù)的個(gè)數(shù)可分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符;按照功能可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符、條件運(yùn)算符、逗號(hào)運(yùn)算符等(請(qǐng)參見附錄B)。1.算術(shù)運(yùn)算符運(yùn)算符功能運(yùn)算符功能+加法/除法-減法(或取負(fù))%取模(求余數(shù),表示兩個(gè)整型數(shù)據(jù)相除后的余數(shù),余數(shù)的符號(hào)與被除數(shù)相同)*乘法2.自增自減運(yùn)算符自增(++)和自減(--)運(yùn)算符是兩個(gè)特殊的單目運(yùn)算符。它們可以改變操作數(shù)(變量)的值,++使操作數(shù)加1,而--使操作數(shù)減1。如x++相當(dāng)于x=x+1,x--相當(dāng)于x=x-1。前置和后置運(yùn)算變量x初值表達(dá)式運(yùn)算后x的值運(yùn)算后表達(dá)式的值2++x332x++322--x112x--12++,--運(yùn)算注意事項(xiàng)使用自增(++)和自減(--)運(yùn)算符時(shí)應(yīng)注意以下幾點(diǎn):對(duì)操作數(shù)的要求:由于自增和自減可以改變操作數(shù)自身的值,因此其運(yùn)算對(duì)象只能是一個(gè)變量。整型、實(shí)型、字符型、指針類型變量均可作為其運(yùn)算對(duì)象。優(yōu)先級(jí):位于第2優(yōu)先級(jí),高于雙目算術(shù)運(yùn)算符+、-、*、/和%。結(jié)合方向:從右至左。運(yùn)算結(jié)果:要區(qū)分兩個(gè)結(jié)果,一個(gè)是表達(dá)式的結(jié)果,一個(gè)是變量自身的結(jié)果。運(yùn)算符前置時(shí),表達(dá)式的值和變量的值一致;后置時(shí)兩者的值不一致。3.賦值運(yùn)算符在C語(yǔ)言里,符號(hào)“=”不是表示數(shù)學(xué)上“相等”的含義,而是一個(gè)賦值運(yùn)算符。其作用是將一個(gè)數(shù)據(jù)值賦給一個(gè)變量值賦運(yùn)算符示例#include<stdio.h>voidmain(){inta;a=20;}使用賦值運(yùn)算符需注意:(1)對(duì)操作數(shù)的要求:賦值運(yùn)算符是雙目運(yùn)算,其左邊的運(yùn)算對(duì)象只能是單個(gè)變量,表示給該變量的存儲(chǔ)空間賦值或修改該存儲(chǔ)空間中的值。賦值運(yùn)算符右邊應(yīng)該是一個(gè)能計(jì)算出確定的值的表達(dá)式(可以是常量、變量)。(2)優(yōu)先級(jí):優(yōu)先級(jí)較低,位于第14優(yōu)先級(jí),僅高于逗號(hào)運(yùn)算符。(3)結(jié)合方向:從右至左。在連續(xù)賦值時(shí),按從右到左的順序依次進(jìn)行。例如“a=b=c=5;"先計(jì)算c=5,再計(jì)算b=(c=5),最后計(jì)算a=(b=c=5),變量a、b、c的值都是5。要注意的是,前面介紹的變量的初始化與連續(xù)賦值是有區(qū)別的,初始化每次只能對(duì)個(gè)變量進(jìn)行,如“inta=b=c=5;”這種初始化形式是錯(cuò)誤的,必須對(duì)每個(gè)變量分開進(jìn)行初始化。(4)運(yùn)算結(jié)果的類型:即左邊變量的數(shù)據(jù)類型。當(dāng)賦值運(yùn)算符左右類型不一致時(shí),需要進(jìn)行類型轉(zhuǎn)換,將右邊的類型轉(zhuǎn)換為左邊的類型,這種轉(zhuǎn)換是系統(tǒng)自動(dòng)進(jìn)行的。因此賦值時(shí)要盡可能保證類型一致或左邊類型存儲(chǔ)長(zhǎng)度大于右邊字節(jié)數(shù),否則可能會(huì)有數(shù)據(jù)丟失。轉(zhuǎn)換原則是:先將賦值號(hào)右邊表達(dá)式類型轉(zhuǎn)換為左邊變量的類型,然后賦值。復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符使用一般形式為:
<變量><雙目運(yùn)算符>=<表達(dá)式>等價(jià)于:
<變量>=<變量><雙目運(yùn)算符><表達(dá)式>例如:n+=1 等價(jià)于n=n+1x*=y+1 等價(jià)于x=x*(y+1)注意,使用復(fù)合賦值運(yùn)算符時(shí),其右邊的表達(dá)式應(yīng)看作一個(gè)整體,4.關(guān)系運(yùn)算符關(guān)系運(yùn)算的功能就是比較兩個(gè)運(yùn)算對(duì)象的大小關(guān)系,如果描述的大小關(guān)系成立,結(jié)果為真,用“1”表示,不成立則結(jié)果為假,用“0”表示。C語(yǔ)言提供了6種關(guān)系運(yùn)算符:小于(<)、小于等于(<=)、大于(>)、大于等于(>=)等于(==)、不等于(!=)關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性均為左結(jié)合性。運(yùn)算結(jié)果:整型,0或14.關(guān)系運(yùn)算符#include<stdio.h>Voidmain(){inta=1,b=2,c=3,d=4;printf(“%d\n”,a+b>c+d);printf(“%d\n”,a<=2*b);printf(“%d\n”,’a’<‘d’);printf(“%d\n”,a!=(c==d));}5.邏輯運(yùn)算符在程序設(shè)計(jì)中,有時(shí)要求一些條件同時(shí)成立,有時(shí)只要求其中一個(gè)條件成立即可,這就要用到邏輯運(yùn)算符。C語(yǔ)言提供了3種邏輯運(yùn)算符&& 邏輯與,雙目運(yùn)算符,兩個(gè)運(yùn)算對(duì)象同時(shí)為真時(shí),運(yùn)算結(jié)果才為真,否則為假。|| 邏輯或,雙目運(yùn)算符,兩個(gè)運(yùn)算對(duì)象任意一個(gè)為真時(shí),運(yùn)算結(jié)果就為真,同時(shí)為假時(shí)結(jié)果為假。! 邏輯非,單目運(yùn)算符,對(duì)運(yùn)算對(duì)象的值取反,運(yùn)算對(duì)象為真結(jié)果為假,運(yùn)算對(duì)象為假結(jié)果為真。邏輯運(yùn)算真值表ab!aa&&ba||b真真假真真真假假假真假真真假真假假真假假使用邏輯運(yùn)算符需注意:(1)對(duì)操作數(shù)的要求:任何類型的值都可以作為邏輯運(yùn)算的對(duì)象,不同類型的運(yùn)算對(duì)象也可以混合運(yùn)算。邏輯運(yùn)算只對(duì)運(yùn)算對(duì)象以0和非0值來區(qū)分,所有非0的運(yùn)算對(duì)象都看做真,值為0的運(yùn)算對(duì)象則看做假。(2)優(yōu)先級(jí):?jiǎn)文窟\(yùn)算符邏輯非(!)位于第2優(yōu)先級(jí),其余邏輯運(yùn)算符優(yōu)先級(jí)均低于關(guān)系運(yùn)算符。而其中邏輯與(&&)位于第11優(yōu)先級(jí),高于第12優(yōu)先級(jí)的邏輯或(||)。(3)結(jié)合方向:從左至右。(4)運(yùn)算結(jié)果:整型,并且只有兩種可能值:數(shù)值1、0,分別表示真和假。邏輯運(yùn)算符“短路”功能從邏輯運(yùn)算真值表可以看出,邏輯與、邏輯或有如下特點(diǎn):a&&b當(dāng)a為0時(shí),不管b為何值,結(jié)果均為0。a||b當(dāng)a為1時(shí),不管b為何值,結(jié)果均為1。C語(yǔ)言規(guī)定在進(jìn)行邏輯與運(yùn)算時(shí),如果左邊運(yùn)算對(duì)象為0,則不需計(jì)算右邊的運(yùn)算對(duì)象,直接判斷邏輯運(yùn)算的結(jié)果為0;而進(jìn)行邏輯或運(yùn)算時(shí),如果左邊運(yùn)算對(duì)象為1,則不需計(jì)算右邊的運(yùn)算對(duì)象,直接判斷邏輯運(yùn)算的結(jié)果為1。就是說邏輯與、邏輯或這兩個(gè)運(yùn)算符有很特別的“短路”功能,即不管進(jìn)行單個(gè)還是連續(xù)的邏輯運(yùn)算時(shí),嚴(yán)格按照從左到右的方向,當(dāng)根據(jù)左邊的運(yùn)算對(duì)象已經(jīng)能判斷整個(gè)邏輯表達(dá)式的結(jié)果時(shí),則不再計(jì)算右邊的運(yùn)算對(duì)象。6.逗號(hào)運(yùn)算符在C語(yǔ)言中,逗號(hào)除了作為分隔符使用以外,還可以作為一種運(yùn)算符使用。可以用它將兩個(gè)或更多個(gè)表達(dá)式連接起來,使用形式為:表達(dá)式1,表達(dá)式2,…,表達(dá)式n求解過程:從左至右依次執(zhí)行每個(gè)子表達(dá)式,先求表達(dá)式1的值,再求表達(dá)式2的值,…,最后求解表達(dá)式n的值。表達(dá)式n的值為整個(gè)逗號(hào)表達(dá)式的值。逗號(hào)運(yùn)算示例#include<stdio.h>voidmain(){intx,a;x=(a=2*3,a*4,a+5);
printf(“x=%d,a=%d\n”,x,a);}程序運(yùn)行結(jié)果為:X=11,a=67.條件運(yùn)算符條件運(yùn)算符是三目運(yùn)算符,由兩個(gè)符號(hào)“?:”組成,需要3個(gè)運(yùn)算對(duì)象。使用形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3求解過程:若表達(dá)式1的值為真(非0),則執(zhí)行表達(dá)式2,其結(jié)果作為整個(gè)條件表達(dá)式的值,否則執(zhí)行表達(dá)式3,其結(jié)果作為整個(gè)條件表達(dá)式的值。條件運(yùn)算符舉例#include<stdio.h>voidmain(){inta=2,b=1,m=6,n=6,x;x=a>b?(m=0):(n=0);printf("x=%d,m=%d,n=%d\n",x,m,n);}程序運(yùn)行結(jié)果為:X=0,m=0,n=68.其它運(yùn)算符sizeof()運(yùn)算符,單目運(yùn)算,第2優(yōu)先級(jí),結(jié)合方向是從右至左,該運(yùn)算符的功能是計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)。使用形式:
sizeof(變量名|數(shù)據(jù)類型標(biāo)識(shí)符|表達(dá)式)sizeof()運(yùn)算符示例#include<stdio.h>voidmain(){inta=5;floatx=3.2,y=6.4;printf(“%d\n”,sizeof(a));/*計(jì)算變量a的數(shù)據(jù)類型所占字節(jié)數(shù)*/printf(“%d\n”,sizeof(char));/*計(jì)算數(shù)據(jù)類型char所占字節(jié)數(shù)*/printf(“%d\n”,sizeof(x+y));/*計(jì)算表達(dá)式x+y的結(jié)果的數(shù)據(jù)類型所占字節(jié)數(shù)*/printf(“%d\n”,sizeof(double));}2.3.2表達(dá)式表達(dá)式由運(yùn)算符與數(shù)據(jù)對(duì)象組合而成。由于運(yùn)算符的種類很多,對(duì)應(yīng)的表達(dá)式也有很多種,比如算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式和賦值表達(dá)式等。數(shù)據(jù)對(duì)象可以是多種類型的常量、變量、函數(shù),也可以是表達(dá)式,從而組合成更復(fù)雜的表達(dá)式。表達(dá)式運(yùn)算后只會(huì)產(chǎn)生一個(gè)結(jié)果,該結(jié)果是具有某種數(shù)據(jù)類型的數(shù)值。表達(dá)式的值與運(yùn)算符的種類和運(yùn)算對(duì)象的類型有關(guān)。2.3.3類型轉(zhuǎn)換表達(dá)式的值除了數(shù)值大小,還有數(shù)據(jù)類型。在表達(dá)式的計(jì)算過程中,不同數(shù)據(jù)類型進(jìn)行混合運(yùn)算時(shí)需要進(jìn)行類型轉(zhuǎn)換。C語(yǔ)言提供了3種類型轉(zhuǎn)換方式:自動(dòng)轉(zhuǎn)換、強(qiáng)制轉(zhuǎn)換和賦值轉(zhuǎn)換。1.自動(dòng)類型轉(zhuǎn)換表達(dá)式中不同類型的運(yùn)算對(duì)象,先向其中數(shù)據(jù)類型長(zhǎng)度較長(zhǎng)的運(yùn)算對(duì)象進(jìn)行類型轉(zhuǎn)換,然后再進(jìn)行同類型運(yùn)算,整個(gè)表達(dá)式的類型為表達(dá)式中的數(shù)據(jù)類型長(zhǎng)度最長(zhǎng)的運(yùn)算對(duì)象類型。這種轉(zhuǎn)換由編譯器自動(dòng)完成,稱為自動(dòng)類型轉(zhuǎn)換,也稱隱式類型轉(zhuǎn)換。自動(dòng)類型轉(zhuǎn)換規(guī)則doublelongfloatunsignedintshort,char2.強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換也稱顯式轉(zhuǎn)換,是用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將運(yùn)算對(duì)象轉(zhuǎn)換為需要的數(shù)據(jù)類型。使用形式為:
(目標(biāo)類型說明符)表達(dá)式例如,設(shè)folatx=7.5;則x%3顯然不符合要求,因?yàn)橹荒軐?duì)整型數(shù)據(jù)進(jìn)行取余運(yùn)算,所以需要用到強(qiáng)制類型轉(zhuǎn)換,(int)x%3即7%33.賦值時(shí)的類型轉(zhuǎn)換在賦值運(yùn)算符中已經(jīng)提到過,當(dāng)賦值運(yùn)算符左右類型不一致時(shí),需要進(jìn)行類型轉(zhuǎn)換,將右邊的類型轉(zhuǎn)換為左邊的類型,這種轉(zhuǎn)換是系統(tǒng)自動(dòng)進(jìn)行的,遵循以下規(guī)則:實(shí)型數(shù)據(jù)賦值給整型變量時(shí),直接取整,舍棄小數(shù)部分。例如,整型變量i,i=5.68,則i的值為5。字符型或整型數(shù)據(jù)賦值給實(shí)型數(shù)據(jù)時(shí),數(shù)值不變,但要補(bǔ)足相應(yīng)的有效位數(shù),以實(shí)型數(shù)據(jù)存儲(chǔ)到變量中。單精度實(shí)型賦值給雙精度實(shí)型時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位,以8個(gè)字節(jié)存儲(chǔ);雙精度實(shí)型賦值給單精度實(shí)型時(shí),只截取前面7位有效數(shù)字,以4個(gè)字節(jié)存儲(chǔ),這時(shí)應(yīng)注意數(shù)據(jù)是否溢出。3.賦值時(shí)的類型轉(zhuǎn)換字符型數(shù)據(jù)賦值給整型變量時(shí),將ASCII碼值賦給最低的8位,若字符的最高位為0,則其余位全部補(bǔ)0,若字符的最高位為1,則其余位全部補(bǔ)1。整型數(shù)據(jù)賦值給字符型變量時(shí),只截取最低的8位賦給字符型變量。int或long類型數(shù)據(jù)賦值給short類型變量時(shí),只截取最低的16位賦給short類型變量;short類型數(shù)據(jù)賦值給int或long類型變量時(shí),將數(shù)據(jù)直接賦給最低的16位,其余位按原short類型的最高位擴(kuò)展,全部補(bǔ)0或全部補(bǔ)1。unsigned類型數(shù)據(jù)賦值給長(zhǎng)度相同的非unsigned類型變量時(shí),直接傳送數(shù)據(jù);非unsigned類型數(shù)據(jù)賦值給長(zhǎng)度相同的unsigned類型變量時(shí),連符號(hào)位一起作為數(shù)值進(jìn)行數(shù)據(jù)賦值。2.4標(biāo)準(zhǔn)輸入/輸出2.4.1printf()函數(shù)printf()函數(shù)稱為格式化輸出函數(shù),它能夠按用戶指定的格式輸出多種類型的數(shù)據(jù),其使用形式為:printf(“格式控制字符串”,輸出列表);格式控制字符串中的非格式符可以是普通字符,也可以是轉(zhuǎn)義字符,實(shí)際上格式控制字符串由三部分組成:普通字符:輸出時(shí)按原樣輸出,用于輸出提示信息。轉(zhuǎn)義字符:無法用單個(gè)字符描述的一些特定操作,如\n(換行)、\t(跳到下一個(gè)水平制表位)等。格式說明符:由%加格式字符串組成,表示按規(guī)定的格式輸出數(shù)據(jù)。格式字符及含義格式字符含義d以十進(jìn)制形式輸出帶符號(hào)整數(shù)(默認(rèn)正數(shù)不輸出符號(hào))o以八進(jìn)制形式輸出無符號(hào)整數(shù)(默認(rèn)不輸出前綴0)x或X以十六進(jìn)制形式輸出無符號(hào)整數(shù)(默認(rèn)不輸出前綴0x)u以十進(jìn)制形式輸出無符號(hào)整數(shù)f以小數(shù)形式輸出單、雙精度實(shí)數(shù)e或E以指數(shù)形式輸出單、雙精度實(shí)數(shù)g或G以%f或%e中輸出寬度較短的形式輸出單、雙精度實(shí)數(shù)c輸出單個(gè)字符s輸出字符串格式輸出示例#include<stdio.h>voidmain(){inta=123;floatb=123.1234567;doublec=12345678.1234567;charch='f';
printf("a=%d,%8.5d,%08d,%o,%#x\n",a,a,a,a,a,a);printf("b=%f,%-10.3f,%e,%g\n",b,b,b,b);printf("c=%f,%8.4f,%g\n",c,c,c);
printf("ch=%c,%8c\n",ch,ch);printf("%s,%.4s\n","abcdef","abcdef");}2.4.2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微生物培養(yǎng)基的配制試題及答案
- 項(xiàng)目溝通管理的信息流動(dòng)性試題及答案
- 高分攻略的證券從業(yè)資格證試題及答案
- 2025年會(huì)計(jì)決策模型試題及答案
- 逐步提高2025年證券從業(yè)資格證考試試題及答案
- 財(cái)務(wù)深度分析案例研究試題及答案
- 2025年國(guó)際金融理財(cái)師考試的多元化投資策略試題及答案
- 專家論證施工方案的流程
- 2025年審計(jì)核心技能試題及答案
- 2024年微生物實(shí)驗(yàn)室的統(tǒng)計(jì)應(yīng)用試題及答案
- 綠色建筑工程監(jiān)理實(shí)施細(xì)則
- 人教版地理八年級(jí)下冊(cè)《第二節(jié) 干旱的寶地──塔里木盆地》說課稿1
- (完整文本版)日文履歷書(文本テンプレート)
- 湖南省常德市2023-2024學(xué)年八年級(jí)下學(xué)期期末考試歷史試題(無答案)
- 挖掘鏟運(yùn)和樁工機(jī)械司機(jī)(技師)考試復(fù)習(xí)題庫(kù)(含答案)
- 古詩(shī)詞誦讀《客至》《賓至》聯(lián)讀課件統(tǒng)編版高中語(yǔ)文選擇性必修下冊(cè)
- (高清版)JTGT 5214-2022 在用公路橋梁現(xiàn)場(chǎng)檢測(cè)技術(shù)規(guī)程
- DZ∕T 0215-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 煤(正式版)
- 浙江省紡織服裝出口面臨的問題及應(yīng)對(duì)措施
- MOOC 數(shù)據(jù)結(jié)構(gòu)-西北大學(xué) 中國(guó)大學(xué)慕課答案
- 日本抵押貸款市場(chǎng)調(diào)研和分析報(bào)告(英文版)-2024年1月上傳培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論