大學(xué)C語(yǔ)言實(shí)用教程第3章.ppt
《大學(xué)C語(yǔ)言實(shí)用教程第3章.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《大學(xué)C語(yǔ)言實(shí)用教程第3章.ppt(33頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第3章數(shù)據(jù)運(yùn)算,大學(xué)C語(yǔ)言實(shí)用教程,計(jì)算機(jī)的基本功能是進(jìn)行數(shù)據(jù)處理,而數(shù)據(jù)處理主要是通過(guò)對(duì)表達(dá)式的計(jì)算完成的。表達(dá)式是將運(yùn)算量用運(yùn)算符連接起來(lái)組成的式子,其中運(yùn)算量可以是常量、變量或函數(shù)。由于運(yùn)算量劃分為不同的數(shù)據(jù)類型,每一種數(shù)據(jù)類型都規(guī)定了自己特有的運(yùn)算或操作,這就形成了對(duì)應(yīng)于不同數(shù)據(jù)類型的運(yùn)算符集合及其相應(yīng)的求值規(guī)則。,必須連接兩個(gè)運(yùn)算量的運(yùn)算符稱為二元運(yùn)算符a+ba%ba/b只連接一個(gè)運(yùn)算量的運(yùn)算符稱為一元運(yùn)算符-aa++--b,3.1算術(shù)運(yùn)算,1.算術(shù)運(yùn)算符,用算術(shù)運(yùn)算符連接數(shù)值型的運(yùn)算量而得到的式子。-5*3+6%4/2-1(a+b)/(a-b)a+(b++)*c,(1)求余運(yùn)算的規(guī)則假設(shè)兩個(gè)整數(shù)分別為a和b,則a%b=a-a/b*b8%3=2,-8%3=-2,8%(-3)=2-8%(-3)=-2(2)自加(加1)自減(減1)運(yùn)算++i表示i=i+1--i表示i=i-1,2.算術(shù)表達(dá)式,①++或--可以用于前綴,也可以用于后綴。++n表示先令n=n+1,然后取n的值//先運(yùn)算后變化n++表示先取n的值,然后令n=n+1//先運(yùn)算后變化②如果前綴或后綴運(yùn)算形成一條語(yǔ)句,其運(yùn)算結(jié)果是相同的。例如,設(shè)i=5,則i++;及++i;運(yùn)算后,i的值均為6。,100101101100,【例】加1和減1運(yùn)算。#includevoidmain(){inta=100;printf("%d\n",a);printf("%d\n",++a);//前綴printf("%d\n",a--);//后綴printf("%d\n",a);},,-++i-i++5*6%4/3a+b-c③用圓括號(hào)可以提高某個(gè)運(yùn)算符的優(yōu)先級(jí)或結(jié)合性,但不允許使用方括號(hào)或花括號(hào)。x+y*s-a+4/5*32與(x+(y*(s-a)+4)/5)*32,3.算術(shù)表達(dá)式求值規(guī)則(1)算術(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性①優(yōu)先級(jí):不同的運(yùn)算符同時(shí)出現(xiàn)在表達(dá)式中時(shí),進(jìn)行運(yùn)算的優(yōu)先次序②結(jié)合性:同一優(yōu)先級(jí)的運(yùn)算符同時(shí)出現(xiàn)在同一表達(dá)式中時(shí),進(jìn)行運(yùn)算的順序,【例】算術(shù)表達(dá)式計(jì)算優(yōu)先級(jí)和結(jié)合性規(guī)則。,#includevoidmain(){inta=3,b=5,c=15,d=2;printf("%d\n",6-a*b/c%d);printf("%d\n",++a-a++);printf("%d\n",a);},①C編繹系統(tǒng)先將所有的char和shortint都轉(zhuǎn)換成int,所有的float都轉(zhuǎn)換成double。②如果表達(dá)式中只含同類型的運(yùn)算量,則直接進(jìn)行運(yùn)算,運(yùn)算結(jié)果即表達(dá)式的值也是同類型的。3/2值為1(整型)3.0/2.0值為1.5(雙精度型)‘A’+’B’值為131(int)型③如果表達(dá)式中含有不同運(yùn)算類型的運(yùn)算量,先將精度較低的運(yùn)算量轉(zhuǎn)化成精度較高的類型,再與精度較高的運(yùn)算量進(jìn)行運(yùn)算,得到的運(yùn)算結(jié)果為精度較高的類型。,(2)自動(dòng)類型轉(zhuǎn)換規(guī)則,【例】算術(shù)表達(dá)式計(jì)算自動(dòng)類型轉(zhuǎn)換規(guī)則,#includevoidmain(){charch=a;inti=5;unsignedintj=6;longintk=12;floatf=3.0;doubled=6.0;printf(“%lf\n”,ch/i+i*k-(j+k)*(f*d)/(f+i));},38.500000,,ch/i+i*k-(j+k)*(f*d)/(f+i)││││││││││int│long│long│double│doubledouble││││││││││└┬┘└┬┘└┬┘└┬┘└┬┘④⑤①②③long│double││└─┬─┘└──┬─┘double⑧⑥│double└──-─┬──┘│⑦└─────┬──────-─┘⑨,表達(dá)式ch/i+i*k-(j+k)*(f*d)/(f+i)中含有多種類型的變量,根據(jù)優(yōu)先級(jí)和結(jié)合性規(guī)則及自動(dòng)類型轉(zhuǎn)換規(guī)則進(jìn)行計(jì)算,計(jì)算過(guò)程如圖所示。,(3)強(qiáng)制類型轉(zhuǎn)換規(guī)則,當(dāng)算術(shù)表達(dá)式中需要違反自動(dòng)類型轉(zhuǎn)換規(guī)則,或者說(shuō)自動(dòng)類型轉(zhuǎn)換規(guī)則達(dá)不到目的時(shí),可以使用強(qiáng)制類型轉(zhuǎn)換,其格式為:(類型關(guān)鍵字)(表達(dá)式)(double)a強(qiáng)制將變量a轉(zhuǎn)換成double型(int)(x+y)強(qiáng)制將表達(dá)式(x+y)轉(zhuǎn)換成int型(int)x+y強(qiáng)制將變量x轉(zhuǎn)換成int型,然后與y相加其中包圍類型關(guān)鍵字的圓括號(hào)必不可少。,使用強(qiáng)制應(yīng)注意以下幾點(diǎn):(1)在進(jìn)行強(qiáng)制類型轉(zhuǎn)換時(shí),類型關(guān)鍵字必須用括號(hào)括住。例如(int)x不能寫(xiě)成intx。(2)在對(duì)一個(gè)表達(dá)式進(jìn)行強(qiáng)制類型轉(zhuǎn)換時(shí),整個(gè)表達(dá)式也應(yīng)該用括號(hào)括住。例如,(float)(a+b)若寫(xiě)成(float)a+b就只對(duì)變量a進(jìn)行了強(qiáng)制類型轉(zhuǎn)換。(3)在對(duì)變量或表達(dá)式進(jìn)行了強(qiáng)制類型轉(zhuǎn)換后,并不改變?cè)兞炕虮磉_(dá)式的類型。例如,設(shè)x為float型,y為double型,則(int)(x+y)為int型,而x+y仍然是double型。(4)將float型或double型強(qiáng)制轉(zhuǎn)換成int型時(shí),對(duì)小數(shù)部分是四舍五入還是簡(jiǎn)單地截?cái)啵Q于具體的系統(tǒng)。VC++采用的是截?cái)嘈?shù)的辦法。,2.5000001VC++對(duì)高精度類型轉(zhuǎn)換乘低精度類型增強(qiáng)了檢查能力,因此,對(duì)float型變量用double型常數(shù)初始化將給出警告。,【例】算術(shù)表達(dá)式計(jì)算強(qiáng)制類型轉(zhuǎn)換規(guī)則。#includevoidmain(){inta=7,x=3,y=2;floatb=2.5F,c=4.7F,z=3.5F;printf("%f\n",b+a%3*(int)(b+c)%2/4);printf("%d\n",(x+y)%2+(int)b/(int)z);},3.2賦值運(yùn)算,1.賦值運(yùn)算符和賦值表達(dá)式v=e;//賦值語(yǔ)句v=e//賦值表達(dá)式賦值運(yùn)算符:+=-=*=/=%=>=,前五種復(fù)合賦值運(yùn)算符具有算術(shù)運(yùn)算和賦值的雙重功能;后五種復(fù)合賦值運(yùn)算符則具有位運(yùn)算和賦值的雙重功能。,2.賦值表達(dá)式的值和類型在賦值表達(dá)式中,被賦值的變量得到的值就是賦值表達(dá)式的值,而被賦值的變量的類型就是賦值表達(dá)式的類型。例如,在形如v=e的賦值表達(dá)式中,變量v的值就是該賦值表達(dá)式的值,變量v的類型也就是賦值表達(dá)式的類型。,#includevoidmain(){inta=-1;unsignedintb;b=a;//低精度轉(zhuǎn)換成高精度printf("%d%u\n",a,b);},#includevoidmain(){inta;charb;floatc;c=2.5;//高精度轉(zhuǎn)換成低精度b=c;//高精度轉(zhuǎn)換成低精度a=b;//低精度轉(zhuǎn)換成高精度printf("%d,%d,%.1f",a,b,c);},2,2,2.5,-14294967295,3.賦值表達(dá)式中的數(shù)據(jù)類型轉(zhuǎn)換在v=e這樣的賦值表達(dá)式中,當(dāng)v和e的數(shù)據(jù)類型不一致時(shí),C編譯系統(tǒng)自動(dòng)將e的類型轉(zhuǎn)換成與v相同的類型后再賦值?!纠?.5~3.6】賦值表達(dá)式中的數(shù)據(jù)類型轉(zhuǎn)換。,-264,【例3.7】復(fù)合賦值運(yùn)算符和賦值表達(dá)式作為運(yùn)算量。#includevoidmain(){inta=12;a=a-a*a;a=a+a;a+=a-=a*a;//賦值表達(dá)式作為運(yùn)算量printf("%d\n",a);},3.3逗號(hào)運(yùn)算,1.逗號(hào)運(yùn)算符(順序運(yùn)算符)用逗號(hào)運(yùn)算符將幾個(gè)表達(dá)式連接在一起就構(gòu)成逗號(hào)表達(dá)式。a=3*5,a*4,a+5;t=a,a=b,b=t;2.逗號(hào)表達(dá)式的值逗號(hào)表達(dá)式中最右邊的一個(gè)表達(dá)式的值視為逗號(hào)表達(dá)式的值。inta=5;a=3*5,a*4,a+5//該逗號(hào)表達(dá)式的值=?inta=5;a=(3*5,a*4,a+5)//該賦值表達(dá)式的值=?,【例】逗號(hào)運(yùn)算符及逗號(hào)表達(dá)式。#includevoidmain(){intc=5;printf("%d,%d,%d\n",c+=c++,c+8,++c);c=5;printf("%d\n",(c+=c++,c+8,++c));c=5;printf("%d\n",c+=c++,c+8,++c);},(1)用一個(gè)逗號(hào)表達(dá)式語(yǔ)句可代替多個(gè)賦值語(yǔ)句,如a=0;b=1;c=2;可寫(xiě)成a=0,b=1,c=2;(2)用一個(gè)逗號(hào)表達(dá)式語(yǔ)句可得到多個(gè)計(jì)算結(jié)果,如y=10;x=(y=y-5,60/y);執(zhí)行后,x的值為12,y的值為5。(3)當(dāng)某些語(yǔ)法位置只允許出現(xiàn)一個(gè)表達(dá)式時(shí),用逗號(hào)表達(dá)式可實(shí)現(xiàn)多個(gè)表達(dá)式的運(yùn)算,例如后面要介紹的for循環(huán):for(i=0,j=0;i<8,j=c-dx==yscore>90(2)用“==”或“!=”連接兩個(gè)關(guān)系表達(dá)式x>y!=yy)==(z=x-1));x=y==z;printf("%d",x);printf("%d\n",x++>=++y-z--);},011,3.邏輯運(yùn)算符,,4.邏輯表達(dá)式,用邏輯運(yùn)算符連接關(guān)系表達(dá)式或任意數(shù)值型表達(dá)式。charch=‘a(chǎn)’;intx=5;ch>=‘A’printf("%d\n",3*(a+b)>c},邏輯表達(dá)式的特殊計(jì)算問(wèn)題①形如(表達(dá)式1)(m=a>b)},02,3.5測(cè)試數(shù)據(jù)長(zhǎng)度運(yùn)算,C語(yǔ)言并不規(guī)定各種類型的數(shù)據(jù)占用多大的存儲(chǔ)空間,這與宿主機(jī)器的硬件特性有關(guān)。為了能夠確定某一種類型數(shù)據(jù)的長(zhǎng)度,C語(yǔ)言提供了測(cè)試數(shù)據(jù)長(zhǎng)度運(yùn)算符sizeof,它的一般格式為:sizeof(exp)其中,exp可以是類型關(guān)鍵字、變量或表達(dá)式。其功能是給出exp所代表的數(shù)據(jù)類型、變量或表達(dá)式占用的內(nèi)存字節(jié)數(shù)。sizeof(double),sizeof(x),sizeof(a+b),sizeof(3*1.46/7.28)sizeof是一元運(yùn)算符,它的優(yōu)先級(jí)與++、--、intx=5,y=6;floata=1.28f,b=3000.0f;printf("char:%d\n",sizeof(ch));printf("shortint:%dint:%dlongint:%d\n",sizeof(shortint),sizeof(int),sizeof(longint));printf("float:%d\n",sizeof(a));printf("double:%dlongdouble:%d\n",sizeof(double),sizeof(longdouble));printf("intexpress:%d\n",sizeof(x+y));printf("floatexpress:%d\n",sizeof(a+b));printf("characterexpress:%d\n",sizeof(a-0));},C編譯系統(tǒng)在標(biāo)題文件math.h中定義了眾多的數(shù)學(xué)函數(shù)。當(dāng)需要調(diào)用這些數(shù)學(xué)函數(shù)時(shí),要用"#include"命令行包含該標(biāo)題文件。下面列出的函數(shù)中,自變量x和y為double型,n為int型,所有的函數(shù)值均為double型,三角函數(shù)的自變量以弧度為單位,反三角函數(shù)的函數(shù)值以弧度為單位。,3.6常用數(shù)學(xué)函數(shù),知識(shí)點(diǎn)本章,知識(shí)點(diǎn)1:運(yùn)算符的優(yōu)先級(jí)和結(jié)合性知識(shí)點(diǎn)2:算術(shù)表達(dá)式知識(shí)點(diǎn)3:賦值表達(dá)式知識(shí)點(diǎn)4:關(guān)系表達(dá)式和邏輯表達(dá)式知識(shí)點(diǎn)5:逗號(hào)表達(dá)式知識(shí)點(diǎn)6:條件表達(dá)式知識(shí)點(diǎn)7:測(cè)試數(shù)據(jù)長(zhǎng)度運(yùn)算符,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 大學(xué) 語(yǔ)言 實(shí)用教程
鏈接地址:http://m.italysoccerbets.com/p-11498236.html