版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式—本章要點(diǎn)掌握c語言中的數(shù)據(jù)類型掌握常用的表達(dá)式形式,以及運(yùn)算符的優(yōu)先級和結(jié)合性。
X+y/3X=Y=3成績、工資、平均體重、價(jià)格……類型?范圍?精度?內(nèi)存結(jié)構(gòu)?運(yùn)算?1第2章基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式2.1變量和常量2.2基本數(shù)據(jù)類型2.3整型2.4實(shí)型
2.5字符型
2.6運(yùn)算符和表達(dá)式
2.7基本的輸入輸出函數(shù)2.8總結(jié)與提高
預(yù)備知識2計(jì)算機(jī)中數(shù)的表示及進(jìn)制轉(zhuǎn)換數(shù)碼、基與權(quán)數(shù)碼:表示數(shù)的符號基:數(shù)碼的個(gè)數(shù)權(quán):每一位所具有的值數(shù)制<>預(yù)備知識3126912457810119-5=49+7=16=(4)123各種進(jìn)制之間的轉(zhuǎn)換二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制方法:按權(quán)相加<>4各種進(jìn)制之間的轉(zhuǎn)換(整數(shù))二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制方法:按權(quán)相加十進(jìn)制轉(zhuǎn)換成二進(jìn)制、八進(jìn)制、十六進(jìn)制原理:方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0例把十進(jìn)制數(shù)59轉(zhuǎn)換成二進(jìn)制數(shù)5922921427232120(59)10=(111011)2110111111011余余余余余余例把十進(jìn)制數(shù)159轉(zhuǎn)換成八進(jìn)制數(shù)1598198280(159)10=(237)8237余7余3余2例把十進(jìn)制數(shù)459轉(zhuǎn)換成十六進(jìn)制數(shù)4591628161160(459)10=(1CB)161CB余11余12余15二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換二進(jìn)制轉(zhuǎn)換成八進(jìn)制:從右向左,每3位一組(不足3位左補(bǔ)0),轉(zhuǎn)換成八進(jìn)制八進(jìn)制轉(zhuǎn)換成二進(jìn)制:用3位二進(jìn)制數(shù)代替每一位八進(jìn)制數(shù)例(1101001)2=(001,101,001)2=(151)8例(246)8=(010,100,110)2=(10100110)2000~0001~1010~2011~3100~4101~5110~6111~7<>6二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換二進(jìn)制轉(zhuǎn)換成十六進(jìn)制:從右向左,每4位一組(不足4位左補(bǔ)0),轉(zhuǎn)換成十六進(jìn)制十六進(jìn)制轉(zhuǎn)換成二進(jìn)制:用4位二進(jìn)制數(shù)代替每一位十六進(jìn)制數(shù)例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16例(4B9E)16=(0100,1011,1001,1110)2=(100101110011110)20000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F<>7字節(jié)和位內(nèi)存以字節(jié)為單元組成每個(gè)字節(jié)有一個(gè)地址一個(gè)字節(jié)一般由8個(gè)二進(jìn)制位組成每個(gè)二進(jìn)位的值是0或101234567012345678910……...<>76432518數(shù)值的表示方法——原碼、反碼和補(bǔ)碼原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值反碼:正數(shù):反碼與原碼相同負(fù)數(shù):符號位為1,其余位對原碼取反補(bǔ)碼:正數(shù):原碼、反碼、補(bǔ)碼相同負(fù)數(shù):最高位為1,其余位為原碼取反,再對整個(gè)數(shù)加1<>9原碼反碼補(bǔ)碼+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000數(shù)的范圍01111111~11111111(-127~+127)01111111~10000000(-127~+127)01111111~10000000(-128~+127)(用一字節(jié)表示數(shù))負(fù)數(shù)補(bǔ)碼轉(zhuǎn)換成十進(jìn)制數(shù):最高位不動(dòng),其余位取反加1例補(bǔ)碼:11111001
取反:10000110
加1:10000111=-7<>102.1變量和常量—變量數(shù)學(xué)中的變量是指其值可以變化的量,程序中的變量是指可多次賦值的量。變量有三個(gè)要素,變量類型、變量名和變量地址。例2-1變量的使用main(){intx,y,sum;
printf(“\npleaseinputtwointegers:");
scanf("%d%d",&x,&y);/*輸入兩個(gè)整數(shù)*/sum=x+y;/*兩個(gè)整數(shù)求和*/
printf("\nThesumis%d",sum);/*將和輸出*/}112.1
常量與變量標(biāo)識符定義:用來標(biāo)識變量、常量、函數(shù)等的字符序列組成:只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線大小寫敏感不能使用關(guān)鍵字長度:最長32個(gè)字符,一般不超過16個(gè)命名原則:見名知意不宜混淆如l與I,o與0例:判斷下列標(biāo)識符號合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123<>M.D.John3days#33char$123a>b122.1變量和常量—變量C語言中的關(guān)鍵字有(共32個(gè)):auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while。132.1變量和常量—變量例如:下列是合法的變量名:
下列是不合法的變量名:
SUM,_total,_ch1,employee_name,p_1M.D.John,$876,3D67,a>b,int142.1變量和常量—常量相對變量的概念就是常量,也稱為常數(shù)。在程序運(yùn)行過程中,其值不能被改變的量稱為常量。具體來說有兩類:普通常量符號常量3,7.56,’a’,”Ilovebeijing”,……#difinePI3.1415一般用大寫字母是宏定義預(yù)處理命令,不是C語句直接常量:整型常量實(shí)型常量字符常量字符串常量如#definePRICE30常量定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))分類:符號常量:用標(biāo)識符代表常量定義格式:#define
符號常量常量<>例符號常量舉例(ch2_1.c)#definePRICE30main(){
intnum,total;num=10;total=num*PRICE;
printf("total=%d",total);}運(yùn)行結(jié)果:total=300162.1變量和常量—常量例2-2符號常量的例子#definePI3.14main(){floatr,area;
printf(“\nPleaseinputtheradius:");
scanf("%f",&r);/*輸入某圓的半徑*/PI=3.1415926;area=PI*r*r;/*計(jì)算該圓的面積*/
printf("\nTheareaofthecircleis:%f",area);/*輸出該圓的面積*/}/*此句錯(cuò)誤,不能通過編譯,因?yàn)镻I是符號常量,不能重新賦值。*/172.1變量和常量—常量問題:使用符號常量有什么好處?182.2基本數(shù)據(jù)類型C語言數(shù)據(jù)類型C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整型實(shí)型單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長整型long整型int數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進(jìn)行的操作19基本數(shù)據(jù)類型<>類型符號關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned
int0~65535320~4294967295unsigned
longunsigned
short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機(jī)器硬件不同而不同,上表以IBMPC機(jī)為例:202.3整型—整型常量
在C語言中,使用的整型常量有十進(jìn)制、八進(jìn)制和十六進(jìn)制三種,用不同的前綴來標(biāo)識不同進(jìn)制的整型常量,用不同的后綴來標(biāo)識不同類型的整型常量。(1)十進(jìn)制整常量:其各位數(shù)為0~9,但最高位不能為0(除了0這個(gè)數(shù)字外)。例如,22,0,-56等是合法的十進(jìn)制整常數(shù);而01、726C不是十進(jìn)制整常數(shù)。(2)八進(jìn)制整常量:八進(jìn)制整常量必須以數(shù)字0開頭,即以0作為八進(jìn)制數(shù)的前綴。各位數(shù)取值為0~7。212.3整型—整型常量以下各數(shù)是合法的八進(jìn)制數(shù):---01(十進(jìn)制為1)、0101(十進(jìn)制為65)、0177777(十進(jìn)制為65535);以下各數(shù)不是八進(jìn)制數(shù)(Why):---25、07C2。(3)十六進(jìn)制整常量:十六進(jìn)制整常量的前綴為0X或0x。十六進(jìn)制需要十六個(gè)字符來表示各位可能出現(xiàn)的數(shù)符,這些字符規(guī)定為0~9,A~F或a~f。222.3整型—整型常量以下各數(shù)是合法的十六進(jìn)制整常量:---0X4B(十進(jìn)制為75)、0X10(十進(jìn)制為16)、0XFFFF(十進(jìn)制為65535);以下各數(shù)不是十六進(jìn)制整常量:---5A(無前綴0X)、0X5H(含有非十六進(jìn)制數(shù)碼)。232.3整型—整型常量(4)整型常量的后綴:在16位字長的機(jī)器上,基本整型的長度為16位,因此表示的數(shù)的范圍也是有限定的。注意:八進(jìn)制整型常量和十六進(jìn)制整型常量都只能表示正整數(shù),因此16位取值范圍是0~+65535,而十進(jìn)制整型常量可以是負(fù)數(shù),取值范圍為-32768~+32767。如果使用的數(shù)超過了上述范圍,則要用相應(yīng)的后綴來標(biāo)明。242.3整型—整型常量超范圍的數(shù)用長整型數(shù)來表示(關(guān)于整型數(shù)據(jù)類型,參考本章2.3.2節(jié))。長整型數(shù)是用后綴“L”或“l(fā)”來表示的。例如: 十進(jìn)制長整型常數(shù):例如32L(十進(jìn)制為32)、1234567L(十進(jìn)制為1234567); 八進(jìn)制長整型常數(shù):例如040L(十進(jìn)制為32)、0300000L(十進(jìn)制為98304); 十六進(jìn)制長整型常數(shù):例如0X20L(十進(jìn)制為32)、0XFFFFL(十進(jìn)制為65535)。
注意:整數(shù)32L和基本整常數(shù)32在數(shù)值上并無區(qū)別但是在內(nèi)存中,32L占用4個(gè)字節(jié)空間,而32只占用2個(gè)字節(jié)的空間,因此是不相同的。252.3整型—整型常量如果要表示一個(gè)無符號數(shù),整型常數(shù)的后綴為“U”或“u”。例如:---358u,0x38Au,235Lu均為無符號數(shù)。前綴和后綴可同時(shí)使用以表示各種類型的數(shù)。如0XB7CLu表示十六進(jìn)制無符號長整數(shù)B7C,其十進(jìn)制數(shù)為2940。2.3整型—整型常量262.3整型—整型常量例2-3各進(jìn)制整數(shù)的輸出。main(){
inti;i=167;
printf("\ni=167");
printf("\nThedecimalformis%d",i);/*以十進(jìn)制格式顯示*/
printf("\nthe
octonaryformis%o",i);/*以八進(jìn)制格式顯示*/
printf("\nthehexadecimalformis%x",i);/*以十六進(jìn)制格式顯示*/i=0167;
272.3整型—整型常量
printf("\ni=0167");
printf("\nThedecimalformis%d",i);
printf("\nthe
octonaryformis%o",i);
printf("\nthehexadecimalformis%x",i);i=0x167;
printf("\ni=0x167");
printf("\nThedecimalformis%d",i);
printf("\nthe
octonaryformis%o",i);
printf("\nthehexadecimalformis%x",i);}282.3整型—整型常量運(yùn)行該程序后,其結(jié)果為:i=167Thedecimalformis167Theoctonaryformis247Thehexadecimalformisa7i=0167Thedecimalformis119Theoctonaryformis167Thehexadecimalformis77i=0x167thedecimalformis359theoctonaryformis547thehexadecimalformis167292.3整型—整型變量整型變量分類。短整型≤基本整型≤長整型。在16位字長的機(jī)器中,基本整型變量占2個(gè)字節(jié)。有無符號位有符號整型無符號整型有無符號位短整型長整型基本整型2*3=6類302.3整型—整型變量1.整數(shù)的機(jī)內(nèi)表示如果聲明一個(gè)整型變量:inti;i=876;因?yàn)?76=29+28+26+25+23+22,所以在機(jī)內(nèi)二進(jìn)制的表示形式如圖2-2所示(共占16位):圖2-2876在內(nèi)存中的表示0000001101101100312.3整型—整型變量無符號整型將所有的位均表示為數(shù)據(jù),因此只有正數(shù)形式。有符號的整型將最高位用做符號位,最高位為“1”表示負(fù)數(shù),為“0”表示正數(shù)。322.3整型—整型變量2.整型變量的類型 數(shù)據(jù)類型類型說明符字節(jié)數(shù)表示范圍無符號短整型unsignedshort[int]20~65535有符號短整型[signed]Short[int]2-32768~32767無符號整型unsigned[int]20~65535有符號整型[signed]int2-32768~32767無符號長整型unsignedlong[int]40~4294967295有符號長整型[signed]long[int]4-2147483648~2147483647332.3整型—整型變量3.整型變量的聲明和賦值聲明變量的格式為:
變量類型變量名;下面是聲明整型變量的例子:
shortintx;聲明了一個(gè)短整型的變量x。而
unsignedinty;則聲明了一個(gè)無符號的基本整型變量y。342.3整型—整型變量聲明變量的時(shí)候要注意三點(diǎn):(1)允許一行聲明多個(gè)同類型變量,各變量名間用“,”(逗號)隔開;(2)變量必須先聲明,然后才能使用;(3)在一個(gè)語句塊中,程序中所有的變量應(yīng)當(dāng)一起聲明在開始處,不能重復(fù)聲明。
352.3整型—整型變量例2-4整型變量的運(yùn)用main(){
inta,b,c,d;/*在程序段開始處一起聲明變量*/unsignedu;a=12;b=-24;u=10;/*用常量為變量賦值*/c=a+u;d=b+u;/*用一個(gè)表達(dá)式為變量賦值*/
printf("\na+u=%d,b+u=%d",c,d);}362.3整型—整型變量例2-5一個(gè)不正確的例子main(){intx,y;y=x;printf("\ny=%d",y);}我錯(cuò)在那?嗚嗚嗚……372.3整型—整型變量給整型變量賦值有很多方式(1)聲明時(shí)立即賦值,稱為初始化。例如:
intx=3;
inty=4,z=5;(2)先聲明后賦值。
intx;x=3;(3)通過格式化函數(shù)scanf從標(biāo)準(zhǔn)輸入設(shè)備輸入。
intx;
scanf(“%d”,&x);
382.3整型—整型變量4.整型值的輸出。也可以將整型常量或變量的值以十進(jìn)制、八進(jìn)制或十六進(jìn)制的格式輸出,例2-3說明了這一點(diǎn)。
重要提示:數(shù)學(xué)上的整數(shù)可以無限大,但程序設(shè)計(jì)中整數(shù)在機(jī)內(nèi)存儲所占的內(nèi)存有限,因此整型數(shù)據(jù)表示的范圍有限,在平時(shí)的編程中,要特別注意不能把一個(gè)超過范圍的數(shù)值賦值給一個(gè)整型變量。如果這樣做了,那么這個(gè)整型變量事實(shí)上接受的不是預(yù)想中的值,稱為“溢出”。392.3整型—整型變量例2-6整型數(shù)據(jù)的溢出。main(){
inta,b;a=32767;
b=a+1;printf("%d,%d\n",a,b);
}運(yùn)行后,其結(jié)果為:32767,-32768402.3整型—整型變量為什么會(huì)出錯(cuò)?0111111111111111a=32767:
圖2-5整數(shù)溢出0000000000000001+11000000000000000-32768412.4實(shí)型—實(shí)型常量在C語言中,實(shí)數(shù)只采用十進(jìn)制?;镜男问綖椋?/p>
整數(shù)部分.小數(shù)部分但有兩種表達(dá)方式:(1)小數(shù)方式:由0~9和小數(shù)點(diǎn)組成。例如:
0.35,1.67,67.36,-728.3等。(2)指數(shù)方式:由十進(jìn)制實(shí)數(shù),加階碼標(biāo)志“e”或“E”以及階碼(只能為整常量,可以帶符號)組成。其一般形式為:
aEn或aen(a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù)表示的階碼)其值為a×10n。
422.4實(shí)型—實(shí)型常量實(shí)型常量的例子使用實(shí)型常量要注意以下幾點(diǎn):
(1)整數(shù)部分和小數(shù)部分可以省略其中的一個(gè),例如,.36和200.都是合法的實(shí)型常量。
(2)用指數(shù)方式時(shí),E或e兩邊都要有數(shù)字,但都只能是常量。
(3)實(shí)型分為單精度實(shí)型和雙精度實(shí)型,但是實(shí)型常數(shù)不分單、雙精度,都按雙精度double型處理。0.36e2,表示0.36×102;12.56E12,表示12.56×1012;-3.89e-3,表示-3.89×10-3。432.4實(shí)型—實(shí)型變量1.實(shí)型數(shù)據(jù)的機(jī)內(nèi)表示 實(shí)型數(shù)據(jù)一般占4個(gè)字節(jié)(32位)內(nèi)存空間,按指數(shù)形式存儲。比如實(shí)數(shù)3.14159在內(nèi)存中的存放形式:+.314159+1數(shù)符小數(shù)部分階符階數(shù)小數(shù)部分占的位數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。
442.4實(shí)型—實(shí)型變量2.實(shí)型變量的類型類型類型說明符比特?cái)?shù)(字節(jié)數(shù))有效數(shù)字表示范圍單精度實(shí)型float32(4)6~7-3.4×10-37~3.4×1038
雙精度實(shí)型double64(8)15~16-1.7×10-307~1.7×10308
長雙精度實(shí)型longdouble128(16)18~19-1.2×10-4931~1.2×104932
452.4實(shí)型—實(shí)型變量3.實(shí)型變量的聲明和賦值實(shí)型變量定義的格式和書寫規(guī)則與整型相同。例如:
floatx,y;(x,y為單精度實(shí)型量)doublea,b,c;(a,b,c為雙精度實(shí)型量)462.4實(shí)型—實(shí)型變量 實(shí)型變量賦值方式與整型變量類似,但是要注意的是從鍵盤輸入時(shí)scanf()函數(shù)的類型說明符為“%f”:
floatx; x=scanf(“%f”,&x);
從鍵盤輸入實(shí)數(shù)時(shí)可以用小數(shù)的形式或指數(shù)的形式輸入。
472.4實(shí)型—實(shí)型變量4.實(shí)型值的輸出 若用printf()函數(shù)輸出,格式輸出符是“%f”,細(xì)節(jié)請參看本章2.7節(jié)。482.4實(shí)型—實(shí)型變量5.實(shí)型數(shù)據(jù)的舍入誤差例2-7實(shí)型數(shù)據(jù)的舍入誤差。main(){floata,b;a=123456.789e5;b=a+20;printf("\na=%f,b=%f",a,b);}該程序的運(yùn)行結(jié)果是:a=12345678848.000000,b=12345678848.000000492.5字符型—字符常量字符常量是用單引號括起來的單個(gè)字符或轉(zhuǎn)義字符。例如: 'a'、'c'、'='、'+'、'?'都是合法字符常量。注意,‘a(chǎn)’和‘A’是不同的字符常量。在C語言中,字符常量有以下特點(diǎn):(1)字符常量只能用單引號括起來,不能用雙引號或其它括號。(2)字符常量只能是單個(gè)字符,不能是字符串。(3)有些字符有特殊含義,如單引號“‘”、雙引號““”等,還有一些字符不能或不方便直接從鍵盤輸入,比如回車換行符、退格符等。這時(shí)可使用轉(zhuǎn)義字符來表示。502.5字符型—字符常量轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼
\n回車換行10
\t橫向跳到下一制表位置9
\b退格8
\r回車13
\f走紙換頁12
\\反斜線符"\"92
\'單引號符39\”雙引號符34
\a鳴鈴7
\ddd1~3位八進(jìn)制數(shù)所代表的字符
\xhh1~2位十六進(jìn)制數(shù)所代表的字符512.5字符型—字符常量廣義地講,C語言字符集中的任何一個(gè)字符均可用轉(zhuǎn)義字符來表示。表中的\ddd和\xhh正是為此而提出的。ddd和hh分別為八進(jìn)制和十六進(jìn)制的ASCII代碼(ASCII表見附錄1)。如‘\101’(十進(jìn)制為65)表示字母‘A’,‘\012’(十進(jìn)制為10)代表"換行",‘\376’代表圖形字符“■”,‘\XOA’表示換行等。特別注意‘\0’或‘\000’是代表ASCII碼為0的控制字符,即“空操作”。要注意的是,‘\015’表示回車,不換行,使得輸出的當(dāng)前位置移到本行開頭,而‘\n’表示回車換行,使得輸出的當(dāng)前位置跳到了下一行的行首。522.5字符型—字符常量例2-8轉(zhuǎn)義字符的使用。main(){printf("abc\tde\rf\012");
printf("hi\'\"\101\x61");}運(yùn)行后其結(jié)果如下(□表示空格,本章其它地方出現(xiàn)這個(gè)符號,不作特別說明的話也代表空格):fab□c□□□de□hi’”□Aa
532.5字符型—字符變量1.字符數(shù)據(jù)的機(jī)內(nèi)表示01111000每個(gè)字符變量被分配一個(gè)字節(jié)的內(nèi)存空間,因此只能存放一個(gè)字符。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中。如'x'的十進(jìn)制ASCII碼是120,'y'的十進(jìn)制ASCII碼是121。對字符變量a,b賦予‘x’和‘y’值:a='x';b='y';實(shí)際上是在a,b兩個(gè)單元內(nèi)存放120和121的二進(jìn)制代碼,如圖2-7所示:a:b:01111001542.5字符型—字符變量例2-9把整數(shù)賦給字符變量。main(){chara,b;a='x';/*將字符常量賦值給字符變量*/b=120;/*將整型常量賦值給字符變量*/
printf("%c,%d\n",a,a);
printf("%c,%d\n",b,b);}
運(yùn)行后其結(jié)果是:x,120x,120
552.5字符型—字符變量例2-10大小寫轉(zhuǎn)換main(){chara,b;a='a';b='B';
printf("\n%c,%d\n%c,%d",a,a,b,b);a=a-32;b=b+32;
printf("\n%c,%d\n%c,%d",a,a,b,b);}
運(yùn)行后,其結(jié)果是:a,97B,66A,65b,98 562.5字符型—字符變量2.字符變量的聲明和賦值字符變量的聲明格式為:
char變量名; 例如:
charx,y; 該語句聲明了兩個(gè)字符變量x和y。字符變量聲明后就可以賦值,對于聲明的變量x可以這樣賦值:
x=‘x’; 注意,在該語句中,左邊的x是變量,而右邊的x是字符常量。
572.5字符型—字符變量字符變量也可用轉(zhuǎn)義字符賦值:
x=‘\b’; 該語句將退格符賦值給了x。 也可以從標(biāo)準(zhǔn)輸入設(shè)備輸入字符給字符變量,如:scanf(“%c”,&x)。因?yàn)閟canf函數(shù)可以指定輸入數(shù)據(jù)的類型,也稱做格式化輸入函數(shù)。582.5字符型—字符串常量在C語言中,沒有為字符串定義變量類型,也就是說,沒有字符串變量這個(gè)概念。但是有字符串常量的概念。日常生活中的人名、書名等,都要用字符串來描述。字符串可以存儲在后面將要學(xué)到的數(shù)組或指針類型變量中。字符串常量是由一對“”括起的字符序列。例如:“CHINA”,“Cprogram”,“$12.5”等都是合法的字符串常量。 如果要將雙引號“””作為字符串的一部分,那么就需要使用轉(zhuǎn)義字符。例如:“thenumber\”5\””,該字符串就是平時(shí)理解的thenumber“5”。592.5字符型—字符串常量字符串常量和字符常量是不同的量。它們之間主要有以下區(qū)別:(1)從書寫格式上看,字符常量由單引號括起來,字符串常量由雙引號括起來。(2)從形式上看,字符常量只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。(3)從賦值方式上看,可以把一個(gè)字符常量賦值給一個(gè)字符變量,但不能把一個(gè)字符串常量賦值一個(gè)字符變量。在C語言中沒有相應(yīng)的字符串變量,但是可以用一個(gè)字符數(shù)組或字符指針變量來存放一個(gè)字符串常量。在數(shù)組一章內(nèi)予以介紹。602.5字符型—字符串常量(4)從內(nèi)存格式上看,字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。增加的一個(gè)字節(jié)中存放字符“\0”(ASCII碼為0)。這是字符串結(jié)束的標(biāo)志。例如:字符串“Cprogram”在內(nèi)存中所占的字節(jié)為如圖2-8所示。CprOgram\0612.5字符型—字符串常量字符常量‘a(chǎn)’和字符串常量“a”雖然都只有一個(gè)字符,但在內(nèi)存中的情況是不同的。思考:語句“printf(“Ilike\0c”)”執(zhí)行的結(jié)果是什么?62一般用大寫字母是宏定義預(yù)處理命令,不是C語句直接常量:整型常量實(shí)型常量字符常量字符串常量如#definePRICE30定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))分類:符號常量:用標(biāo)識符代表常量定義格式:#define
符號常量常量<>例符號常量舉例(ch2_1.c)#definePRICE30main(){
intnum,total;num=10;total=num*PRICE;
printf("total=%d",total);}運(yùn)行結(jié)果:total=300常量63整型常量(整常數(shù))三種形式:十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號表示.如123,-456,0八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011十六進(jìn)制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示.如0x123,0Xff<例12與12L例30000為int型65536為longint
型整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L,認(rèn)為它是longint
型常量問題:0123=()100x123=()100Xff=()1083291255問題:0123=()100x123=()100Xff=()1064實(shí)型常量(實(shí)數(shù)或浮點(diǎn)數(shù))表示形式:十進(jìn)制數(shù)形式:(必須有小數(shù)點(diǎn))如0.123,.123,123.0,0.0,123.指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3,123E2,1.23e4,e-5,1.2E-3.5
<實(shí)型常量的類型默認(rèn)double型在實(shí)型常量后加字母f或F,認(rèn)為它是float型65字符常量定義:用單引號括起來的單個(gè)普通字符或轉(zhuǎn)義字符.
字符常量的值:該字符的ASCII碼值<轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號3位8進(jìn)制數(shù)代表的字符水平制表退格換頁反斜線雙引號2位16進(jìn)制數(shù)代表的字符如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------(
)例:‘A’-------’\101’-------’\x41’--------65<如‘A’——65,‘a(chǎn)’——97,‘0’——48,‘\n’——10如‘a(chǎn)’‘A’‘?’‘\n’‘\101’轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示例轉(zhuǎn)義字符舉例(ch2_001.c,ch2_004.c)
main(){printf("\101\x42C\n");
printf("Isay:\"Howareyou?\"\n");
printf("\\CProgram\\\n");
printf("Turbo\'C\'");}運(yùn)行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}運(yùn)行結(jié)果:屏幕顯示:=打印機(jī)輸出:¥66aaa<字符常量與字符串常量不同字符串常量定義:用雙引號(“”)括起來的字符序列存儲:每個(gè)字符串尾自動(dòng)加一個(gè)‘\0’作為字符串結(jié)束標(biāo)志hello\0例字符串“hello”在內(nèi)存中a
a\0例‘a(chǎn)’“a”例空串“”\0例:charch;
ch=“A”;例:charch;
ch=‘A’;67編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內(nèi)存1-3
隨機(jī)數(shù)概念:其值可以改變的量變量名與變量值變量定義的一般格式:
數(shù)據(jù)類型變量1[,變量2,…,變量n];<>變量初始化:定義時(shí)賦初值例:
inta,b,c;floatdata;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識符例:
inta=2,b,c=4;floatdata=3.67;charch=‘A’;
intx=1,y=1,z=1;
intx=y=z=1;變量的使用:先定義,后使用例1
intstudent;
stadent=19;//Undefinedsymbol‘statent’infunctionmain
例2floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain
變量定義位置:一般放在函數(shù)開頭main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;
printf(“data=%f\n”,data);}變量定義可執(zhí)行語句main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;
printf(“data=%f\n”,data);}Ch2_005.c變量68整型變量占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字short≤int≤long可用sizeof(類型標(biāo)識符)測量例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/<>Ch2_006.c實(shí)型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/沒有字符串變量,用字符數(shù)組存放69例/*ch2_003.c*/#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a(chǎn)’;
printf(“total=%f,ch1=%c\n”,total,ch1);}宏定義變量定義輸出結(jié)果運(yùn)行結(jié)果:total=37.500000,ch1=d702.6運(yùn)算符和表達(dá)式—運(yùn)算符簡介算術(shù)運(yùn)算符:用于各類數(shù)值運(yùn)算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(++)、自減(--)、強(qiáng)制類型轉(zhuǎn)換共八種。關(guān)系運(yùn)算符:用于比較運(yùn)算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。邏輯運(yùn)算符:用于邏輯運(yùn)算。包括與(&&)、或(||)、非(!)三種。位操作運(yùn)算符:參與運(yùn)算的量按二進(jìn)制位逐位進(jìn)行運(yùn)算。包括按位與(&)、按位或(|)、按位非(~)、按位異或(^)、左移(<<)、右移(>>)六種。712.6運(yùn)算符和表達(dá)式—運(yùn)算符簡介賦值運(yùn)算符:用于賦值運(yùn)算,分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)三類共十一種。條件運(yùn)算符:這是一個(gè)三目運(yùn)算符,用于條件求值(?:)。逗號運(yùn)算符:用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。指針運(yùn)算符:用于取內(nèi)容(*)和取地址(&)二種運(yùn)算。求字節(jié)數(shù)運(yùn)算符:用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。特殊運(yùn)算符:有括號(),下標(biāo)[],成員(→,.)等幾種。72學(xué)習(xí)運(yùn)算符應(yīng)注意:運(yùn)算符功能與運(yùn)算量關(guān)系要求運(yùn)算量個(gè)數(shù)要求運(yùn)算量類型運(yùn)算符優(yōu)先級別結(jié)合方向結(jié)果的類型732.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.基本的算術(shù)運(yùn)算符加法運(yùn)算符“+”:加法運(yùn)算符為雙目運(yùn)算符,即應(yīng)有兩個(gè)量參與加法運(yùn)算。如a+b,4+8等。減法運(yùn)算符“-”:減法運(yùn)算符為雙目運(yùn)算符。但“-”也可作負(fù)值運(yùn)算符,此時(shí)為單目運(yùn)算。乘法運(yùn)算符“*”:雙目運(yùn)算符。除法運(yùn)算符“/”:雙目運(yùn)算符。參與運(yùn)算的量均為整型時(shí),結(jié)果為舍去小數(shù)整型數(shù);如果運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型數(shù)。求余運(yùn)算符(也稱模運(yùn)算符)“%”:雙目運(yùn)算符。要求參與運(yùn)算的量均為整型。求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù)。742.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式例2-11兩數(shù)相除。main(){printf("\n%d,%d",20/7,-20/7);printf("\n%f,%f",20.0/7,-20.0/7);}該程序的運(yùn)行結(jié)果為:2,-22.857143,-2.857143
“/”兩個(gè)操作數(shù)如果都為整形,結(jié)果為整形,如果有一個(gè)為實(shí)型,結(jié)果即為實(shí)型。752.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式例2-12除法與求余。main(){
printf("\n%d,%d",100/3,100%3);}
該程序運(yùn)行后的輸出為:33,1762.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級和結(jié)合性表達(dá)式是由常量、變量、函數(shù)和運(yùn)算符組合起來的式子。表達(dá)式有相應(yīng)類型的值,它們等于計(jì)算表達(dá)式所得結(jié)果。表達(dá)式求值按運(yùn)算符的優(yōu)先級和結(jié)合性規(guī)定的順序進(jìn)行。單個(gè)的常量、變量、函數(shù)可以看作是表達(dá)式的特例。772.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)表達(dá)式:用算術(shù)運(yùn)算符和括號將運(yùn)算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,例如(a+b)*3+c/2。例2-13表達(dá)式的值main(){
inta,b;a=5;b=7;
printf("\n(a*2)/b=%d",(a*2)/b);}
其運(yùn)行結(jié)果為:(a*2)/b=1 782.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式(2)運(yùn)算符的優(yōu)先級和結(jié)合性
在表達(dá)式求值的時(shí)候,先按運(yùn)算符的優(yōu)先級別從高到低進(jìn)行,若運(yùn)算量兩側(cè)的運(yùn)算符優(yōu)先級相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處理(優(yōu)先級相同的所有運(yùn)算符結(jié)合方向相同,因此不會(huì)有矛盾)。算術(shù)運(yùn)算符的優(yōu)先級別從小到大是:先乘除(‘*’、‘/’和‘%’的等級相同),后加減(‘+’和‘-’的等級相同)。若有a+b/c
,因?yàn)槌\(yùn)算比加運(yùn)算優(yōu)先級高,因此先算除法,再將其結(jié)果與a相加。792.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式C語言中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右。如有表達(dá)式a+b-c,則b應(yīng)先與“+”號結(jié)合,執(zhí)行a+b運(yùn)算,然后再執(zhí)行-c的運(yùn)算。C語言中各種運(yùn)算符及其優(yōu)先級和結(jié)合性請參看附錄3,理解運(yùn)算符的優(yōu)先級和結(jié)合性才能真正理解表達(dá)式的合法性和運(yùn)算過程。
802.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式3.強(qiáng)制類型轉(zhuǎn)換運(yùn)算其一般形式為:
(類型說明符)(表達(dá)式)其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。例如:
(float)a把a(bǔ)轉(zhuǎn)換為實(shí)型
(int)(x+y)把x+y的結(jié)果轉(zhuǎn)換為整型812.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式如果有下述語句:
inti;floatx=3.6;i=(int)x;/*不能省略括號*/則i的值為3。注意:x本身的值還是3.6。類型轉(zhuǎn)換還有一種,就是自動(dòng)轉(zhuǎn)換,請看下面的語句:
inti=3;floatx;x=i;在這里,語句x=i不需要寫成x=(float)i,其轉(zhuǎn)換是自動(dòng)完成的。
822.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式4.自增、自減運(yùn)算符自增1運(yùn)算符記為“++”,其功能是使變量的值自增1。自減1運(yùn)算符記為“--”,其功能是使變量值自減1。自增1,自減1運(yùn)算符均為單目運(yùn)算,都具有右結(jié)合性??捎幸韵聨追N形式:832.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式(1)++ii自增1后再參與其它運(yùn)算。例如,假設(shè)i和j為已經(jīng)聲明好的整型變量:
j=++i相當(dāng)于(注意兩個(gè)語句的先后順序,不能顛倒):i=i+1;j=i;(2)--ii自減1后再參與其它運(yùn)算。例如:
j=--i;
相當(dāng)于:
i=i-1; j=i;842.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式(3)i++i參與運(yùn)算后,i的值再自增1。例如:
j=i++;
相當(dāng)于:
j=i; i=i+1;(4)i--i參與運(yùn)算后,i的值再自減1。例如:
j=i--;
相當(dāng)于:
j=i; i=i-1;852.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式自加自減運(yùn)算用法靈活,出現(xiàn)在較復(fù)雜的表達(dá)式或語句中時(shí),常常難以弄清,因此應(yīng)仔細(xì)分析。例如,設(shè)i,j都為整型,j=i++合法,而j=(i++)++卻不合法,因?yàn)?i++)是表達(dá)式,不能在用++運(yùn)算了。另外,碰到繁難的表達(dá)式,必要的時(shí)候可以編寫程序運(yùn)行,通過結(jié)果反推其運(yùn)算過程。862.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式例2-14自加自減運(yùn)算main(){
inti=5;
printf("\n%d",-i++);
printf("\n%d",-++i);}
其運(yùn)行的結(jié)果為:-5-7
872.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式例2-15復(fù)雜的自加自減運(yùn)算main(){
inti=5,j=5,k=5,p,q,r;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);r=k+++1;
printf("\ni=%d,p=%d",i,p);
printf("\nj=%d,q=%d",j,q);
printf("\nk=%d,r=%d",k,r);}
882.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式該程序運(yùn)行結(jié)果為:i=8,p=15j=8,q=24k=6,r=6892.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式5.各數(shù)值類型數(shù)據(jù)間的混合運(yùn)算整型、字符型和實(shí)型之間可以混合運(yùn)算,但在運(yùn)算的時(shí)候,不同類型的數(shù)據(jù)需要進(jìn)行自動(dòng)轉(zhuǎn)換,其規(guī)律是:(1)字符型(char)和短整型(short)必定先轉(zhuǎn)換為整型(int);(2)float型一律轉(zhuǎn)換為double型(可以提高運(yùn)算精度);902.6運(yùn)算符和表達(dá)式—算術(shù)運(yùn)算符和算術(shù)表達(dá)式(3)當(dāng)運(yùn)算對象為不同類型時(shí),轉(zhuǎn)換方向是:int→unsigned→long→double例如:int型與double型運(yùn)算,先將int型對象轉(zhuǎn)換為double型后運(yùn)算。912.6運(yùn)算符和表達(dá)式—賦值運(yùn)算符和賦值表達(dá)式1.簡單賦值運(yùn)算符簡單賦值運(yùn)算用“=”表示,基本格式為: 變量=表達(dá)式其含義是把右邊的表達(dá)式的值賦給左邊的變量。也可以用連等的形式:變量1=變量2=……變量n=表達(dá)式。例如:
i=j=5(設(shè)i和j為整型變量); 注意賦值運(yùn)算是右結(jié)合的,因此連等相當(dāng)于: 變量n=表達(dá)式; 變量n-1=變量n;
……; 變量1=變量2;922.6運(yùn)算符和表達(dá)式—賦值運(yùn)算符和賦值表達(dá)式下面給出一些賦值表達(dá)式的例子:x=a+bw=sin(a)+sin(b)y=i+++--ja=b=c=5可理解為a=(b=(c=5))可以說,凡是表達(dá)式可以出現(xiàn)的地方均可出現(xiàn)賦值表達(dá)式。例如,式子:x=(a=5)+(b=8)932.6運(yùn)算符和表達(dá)式—賦值運(yùn)算符和賦值表達(dá)式2.復(fù)合賦值表達(dá)式賦值符“=”之前加上其它一些運(yùn)算符可構(gòu)成復(fù)合賦值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:變量雙目運(yùn)算符=表達(dá)式它等效于變量=變量運(yùn)算符(表達(dá)式)例如:
a+=5等價(jià)于a=a+5x*=y+7等價(jià)于x=x*(y+7)r%=p等價(jià)于r=r%p注意有個(gè)括號942.6運(yùn)算符和表達(dá)式—賦值運(yùn)算符和賦值表達(dá)式3.賦值運(yùn)算中的類型轉(zhuǎn)換(1)實(shí)型賦予整型,舍去小數(shù)部分。(2)整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。(3)字符型賦予基本整型,由于字符型為只占一個(gè)字節(jié),而整型占二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位的值根據(jù)不同的系統(tǒng)確定是否進(jìn)行符號擴(kuò)展。(4)短整型(基本整型)賦予長整型,與字符型賦予基本整型類似,將整個(gè)數(shù)據(jù)寫入長整型的低16位,高16位的值也根據(jù)系統(tǒng)來確定是否進(jìn)行符號擴(kuò)展。(5)整型賦予字符型,只把低八位賦予字符量。952.6運(yùn)算符和表達(dá)式—賦值運(yùn)算符和賦值表達(dá)式例2-16類型轉(zhuǎn)換程序之一。main(){
inta;longintb=112768;a=b;
printf("\n%d",a);}其運(yùn)行結(jié)果為:─18304962.6運(yùn)算符和表達(dá)式—賦值運(yùn)算符和賦值表達(dá)式例2-17類型轉(zhuǎn)換程序之二。main(){
inta,b=322,c;charc1='a',c2;floatx,y=35600.35;a=y;x=b;c=c1;c2=b;
printf("\na=%d,x=%f,c=%d,c2=%d",a,x,c,c2);}
該程序運(yùn)行的結(jié)果是:a=─29936,,x=322.000000,c=97,c2=66972.6運(yùn)算符和表達(dá)式—關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符是用于兩兩之間比較大小,C語言提供了6種關(guān)系運(yùn)算符:
<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、!=(不等于)。關(guān)系表達(dá)式的格式為: 表達(dá)式1關(guān)系運(yùn)算符表達(dá)式2例如:
a<b (3+4)>9982.6運(yùn)算符和表達(dá)式—關(guān)系運(yùn)算符和關(guān)系表達(dá)式可以認(rèn)為關(guān)系表達(dá)式的值為“真(True)”或“假(false)”,但是C語言中沒有邏輯量。關(guān)系表達(dá)式的值要么是1,要么是0。如果關(guān)系成立,則關(guān)系表達(dá)式的值為1,否則為0。表達(dá)式的值(3+4)>9的值為0,可以用printf(“%d”,(3+4)>9)語句來驗(yàn)證。第三章中將進(jìn)一步講述關(guān)系表達(dá)式的使用。
992.6運(yùn)算符和表達(dá)式—邏輯運(yùn)算符和邏輯表達(dá)式C語言提供三種邏輯運(yùn)算符:
&&(邏輯與)、||(邏輯或)、!(邏輯非)。由邏輯運(yùn)算符構(gòu)成的表達(dá)式為邏輯表達(dá)式。
&&運(yùn)算要求兩個(gè)操作數(shù),當(dāng)兩個(gè)操作數(shù)都為“真”時(shí)表達(dá)式的值為“真”,否則為假;||運(yùn)算也需要兩個(gè)操作數(shù),當(dāng)其中之一為“真”時(shí),整個(gè)表達(dá)式就為“真”,否則為假;!為單目運(yùn)算符,若操作數(shù)為“真”,則其邏輯非為“假”,若操作數(shù)為“假”,則其邏輯非為“真”。第三章進(jìn)一步講述關(guān)系表達(dá)式的使用。1002.6運(yùn)算符和表達(dá)式—逗號運(yùn)算符和逗號表達(dá)式在C語言中逗號“,”也是一種運(yùn)算符,稱為逗號運(yùn)算符。其功能是把兩個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式,稱為逗號表達(dá)式。其一般形式為:表達(dá)式1,表達(dá)式2,......表達(dá)式n(n>=2)。其求值過程是分別求各個(gè)表達(dá)式的值,并以表達(dá)式n的值作為整個(gè)逗號表達(dá)式的值。1012.6運(yùn)算符和表達(dá)式—逗號運(yùn)算符和逗號表達(dá)式例2-18逗號表達(dá)式的值main(){inta=2,b=4,c=6,x,y,z;y=(x=a+b),(b+c);z=((x=a+b),(b+c));printf("\ny=%d,x=%d,z=%d",y,x,z);} 本程序的結(jié)果為:y=6,x=6,z=10 1022.6運(yùn)算符和表達(dá)式—逗號運(yùn)算符和逗號表達(dá)式逗號表達(dá)式一般形式中的表達(dá)式也可以又是逗號表達(dá)式。例如: 表達(dá)式1,(表達(dá)式2,表達(dá)式3)形成了嵌套情形。上面整個(gè)表達(dá)式的值就是表達(dá)式3的值。程序中使用逗號表達(dá)式,則分別求逗號表達(dá)式內(nèi)各表達(dá)式的值,并不一定需要將整個(gè)逗號表達(dá)式的值賦給某一變量。1032.7基本的輸入輸出函數(shù)—printf函數(shù)兩種調(diào)用形式格式控制字符串的一般形式為:printf(“字符串”);printf(“格式控制字符串”,輸出表列);
%[flag][[width][.prec]][[h][l][L]]輸出格式字符
1042.7基本的輸入輸出函數(shù)—printf函數(shù)printf的格式字符輸出類型格式控制符格式字符意義[m][l]d或[m][l]i以十進(jìn)制形式輸出帶符號整數(shù)(正數(shù)不輸出符號),方括號中內(nèi)容可選,m為整數(shù),指定輸出字段的寬度和對齊方式。[l]用于輸出長整型。[l]0以八進(jìn)制形式輸出無符號整數(shù)(不輸出前綴O)。[l]用于輸出長整型。[l]x或[l]X以十六進(jìn)制形式輸出無符號整數(shù)(不輸出前綴OX)。[l]用于輸出長整型。[l]u以十進(jìn)制形式輸出無符號整數(shù)。[l]用于輸出長整型。[m.n]f以小數(shù)形式輸出單、雙精度實(shí)數(shù)。方括號中內(nèi)容可選,指定輸出字段的寬度和小數(shù)位數(shù)。1052.7基本的輸入輸出函數(shù)—printf函數(shù)C輸出單個(gè)字符。[m]s或[m.n]s輸出字符串,方括號中內(nèi)容可選,m指定輸出寬度和對齊方式。n用于截取字符串中的一段用于顯示。[m.n]e或[m.n]E以指數(shù)形式輸出單、雙精度實(shí)數(shù)。[m.n]可選,含義同上。g,G以%f或%e中較短的輸出寬度輸出單、雙精度實(shí)數(shù)。1062.7基本的輸入輸出函數(shù)—printf函數(shù)對上表的格式控制符說明如下:(1)%d格式符:用來輸出十進(jìn)制整數(shù),有以下幾種用法:%d:按數(shù)據(jù)實(shí)際長度輸出。%md:m為指定的輸出字段的寬度。m>0時(shí),如果數(shù)據(jù)的位數(shù)小于|m|,則左端補(bǔ)以空格;如果m<0,當(dāng)數(shù)據(jù)的位數(shù)小于|m|,則右端補(bǔ)空格。若數(shù)據(jù)位數(shù)大于|m|,則按實(shí)際位數(shù)輸出。%ld:輸出長整型數(shù)據(jù),如longa=123560;
printf(“%ld”,a);如用%d輸出長整型數(shù)據(jù),就會(huì)發(fā)生錯(cuò)誤,因此long型數(shù)據(jù)應(yīng)該用%ld格式輸出。對長整型數(shù)據(jù)也可指定字段寬度,如用“printf(“%9ld”,a);”語句,其結(jié)果為: □□□123560
共9列。1072.7基本的輸入輸出函數(shù)—printf函數(shù)(2)%o格式符:以8進(jìn)制形式輸出整數(shù)。例如:inta=-1;printf(“%d,%o”,a,a);輸出結(jié)果為:-1,37777777777%lo用于輸出八進(jìn)制長整型。1082.7基本的輸入輸出函數(shù)—printf函數(shù)(3)%x格式符:以16進(jìn)制形式輸出整數(shù)。例如:inta=-1;printf(“%x,%o,%d”,a,a,a);輸出結(jié)果為:ffffffff,37777777777,-1%lx含義是以16進(jìn)制形式輸出長整型數(shù)據(jù)。(4)%u格式符:以十進(jìn)制形式輸出無符號數(shù),例如地址值。1092.7基本的輸入輸出函數(shù)—printf函數(shù)(5)%f格式符:用來以小數(shù)形式輸出實(shí)數(shù)(包括單、雙精度),有以下幾種用法:%f:不指定字段寬度,由系統(tǒng)自動(dòng)指定,使整數(shù)部分原樣輸出,并輸出6位小數(shù)。單精度實(shí)數(shù)的有效位數(shù)一般為7位。雙精度數(shù)也可用%f格式輸出,它的有效位數(shù)一般為16位,小數(shù)部分為6位。1102.7基本的輸入輸出函數(shù)—printf函數(shù)例2-19%f的用法。#include<stdio.h>main(){floatx,y;
doubleu,v;x=111111.111;y=222222.222;u=1111111111111.111111111;v=2222222222222.222222222;
printf("\n%f",x+y);
printf("\n%f",u+v);}輸出結(jié)果為:333333.3281253333333333333.3330101112.7基本的輸入輸出函數(shù)—printf函數(shù)%m.nf:指定輸出的數(shù)據(jù)共占|m|列,其中有n位小數(shù)(不含小數(shù)點(diǎn))。當(dāng)m>0時(shí),如果數(shù)值長度小于|m|,則左端補(bǔ)空格;當(dāng)m<0時(shí),如果如果數(shù)值長度小于|m|,則右端補(bǔ)空格。1122.7基本的輸入輸出函數(shù)—printf函數(shù)例2-20%m.nf的用法。#include<stdio.h>main(){floatf=1234.56789;
printf("\n%f,%10f,%10.2f,%.2f,%-10.2f\n",f,f,f,f,f);}輸出結(jié)果如下:1234.567871,1234.567871,1234.57,1234.57,1234.571132.7基本的輸入輸出函數(shù)—printf函數(shù)(6)%c格式符:輸出一個(gè)字符。例如:charc=’a’;printf(“%c”,c);輸出字符a。一個(gè)整數(shù)的值只要在0~255之間,可用字符形式輸出。在輸出前,將該整數(shù)轉(zhuǎn)換成相應(yīng)的ASCII字符;反之,一個(gè)字符數(shù)據(jù)也可用整數(shù)形式輸出。
1142.7基本的輸入輸出函數(shù)—printf函數(shù)%s格式符:用來輸出一個(gè)字符串,它有以下幾種用法:%s:輸出字符串不包括雙引號。例如,語句“printf(“%s”,”student”);”輸出字符串student。它等價(jià)于“printf(“student”);”。%ms:輸出的字符串占|m|列,如果字符串本身長度大于|m|,則突破|m|的界限,輸出全部字符串。m>0時(shí),如果數(shù)據(jù)的位數(shù)小于|m|,則左端補(bǔ)以空格;如果m<0,當(dāng)數(shù)據(jù)的位數(shù)小于|m|,則右端補(bǔ)空格。%m.ns:m.n格式指輸出占|m|列,但只取字符串左端n個(gè)字符。如果n>|m|,則m自動(dòng)取n,即保證n個(gè)字符正常輸出。1152.7基本的輸入輸出函數(shù)—printf函數(shù)(8)%e格式符:以指數(shù)形式輸出實(shí)數(shù),它有以下幾種形式:e:不指定輸出數(shù)據(jù)所占的寬度和小數(shù)位數(shù)(含小數(shù)點(diǎn)在內(nèi)),由系統(tǒng)自動(dòng)指定給出5位小數(shù),指數(shù)部分總共占4位(如e+03),其中“e”占1位,符號占1位,指數(shù)占2位。數(shù)值按標(biāo)準(zhǔn)化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有一位非零數(shù)字)。例如printf(“%e”,1234.567);出處結(jié)果為:1.23457e+03。也就是說,用%e格式輸出的實(shí)數(shù)共占11位。1162.7基本的輸入輸出函數(shù)—printf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人與銀行2024年度借款合同3篇
- 專業(yè)吊車作業(yè)協(xié)議模板2024版
- 2024版產(chǎn)品標(biāo)準(zhǔn)化認(rèn)證協(xié)議文件版B版
- 2024中美農(nóng)產(chǎn)品加工與出口合作協(xié)議范文3篇
- 2024機(jī)器租賃協(xié)議書
- 搶占春節(jié)外賣市場
- 2024年度地產(chǎn)公司房地產(chǎn)廣告效果評估與優(yōu)化委托代理協(xié)議3篇
- 2024年股權(quán)質(zhì)押擔(dān)保協(xié)議標(biāo)準(zhǔn)格式版B版
- 解讀現(xiàn)代小說奧秘
- 2024年貨款分期償還買賣約定
- 2023年中考語文二輪復(fù)習(xí):圖(表)文轉(zhuǎn)化之徽標(biāo)圖標(biāo) 練習(xí)題匯編(含答案解析)
- 健康產(chǎn)業(yè)園規(guī)劃方案
- 高考培優(yōu)方案
- 2023年中考語文二輪復(fù)習(xí):名著閱讀 真題練習(xí)題匯編(含答案解析)
- 《汽車驅(qū)動(dòng)橋》汽車標(biāo)準(zhǔn)
- 投資的本質(zhì):巴菲特的12個(gè)投資宗旨
- 護(hù)欄和扶手制作與安裝工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄
- 醫(yī)院文化建設(shè)與員工凝聚力提升
- 食堂安全操作規(guī)范培訓(xùn)課件(48張)
- 水庫引調(diào)水工程項(xiàng)目可行性研究報(bào)告
- 乳頭混淆介紹演示培訓(xùn)課件
評論
0/150
提交評論