第三章 數(shù)據(jù)類(lèi)型運(yùn)算符_第1頁(yè)
第三章 數(shù)據(jù)類(lèi)型運(yùn)算符_第2頁(yè)
第三章 數(shù)據(jù)類(lèi)型運(yùn)算符_第3頁(yè)
第三章 數(shù)據(jù)類(lèi)型運(yùn)算符_第4頁(yè)
第三章 數(shù)據(jù)類(lèi)型運(yùn)算符_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章數(shù)據(jù)類(lèi)型運(yùn)算符第一頁(yè),共六十四頁(yè),2022年,8月28日3.1數(shù)據(jù)與數(shù)據(jù)類(lèi)型3.1.1什么是數(shù)據(jù)和數(shù)據(jù)類(lèi)型

數(shù)據(jù)是程序加工、處理的對(duì)象,也是加工的結(jié)果。

數(shù)據(jù)類(lèi)型是程序語(yǔ)言中具有同樣的性質(zhì)的數(shù)據(jù)集合.

整型 int(integer的縮寫(xiě))

字符型

char(character的縮寫(xiě))

單精度型

float

基本類(lèi)型

實(shí)型(浮點(diǎn)型)

雙精度型

double

數(shù)組類(lèi)數(shù)據(jù)類(lèi)型

構(gòu)造類(lèi)結(jié)構(gòu)體struct共用體union枚舉類(lèi)enum

指針類(lèi)

空類(lèi)型

void第二頁(yè),共六十四頁(yè),2022年,8月28日3.2C語(yǔ)言的基本數(shù)據(jù)類(lèi)型及其表示3.2.1常量與變量1.常量——在程序運(yùn)行中其值不能被改變的量常量區(qū)分為不同類(lèi)型。如

123,456:

整型常量

’a’,’A’,’b’,’1’,’0’:

字符常量123.0,3.5:實(shí)型常量

“123”,“A”:字符串常量第三頁(yè),共六十四頁(yè),2022年,8月28日例3_1已知圓半徑r,求圓面積和周長(zhǎng)的值。#defineπ3.14159main(){intarea,perimeter;intr;r=3;area=π*r*r;perimeter=2*π*r;printf(“area=%d\n”,area);printf(“perimeter=%d\n”,perimeter);}符號(hào)PI代替常量3.14159,

稱(chēng)為符號(hào)常量符號(hào)常量的定義是在編譯預(yù)處理語(yǔ)句里進(jìn)行的,稱(chēng)為宏定義符號(hào)常量一般用大寫(xiě)

符號(hào)常量在其作用域內(nèi)值不能改變(不能被賦值)

PI=35;符號(hào)常量在編譯時(shí)被常量替換2.符號(hào)常量——用一個(gè)標(biāo)識(shí)符代表一個(gè)常量,提高程序的可修改性和靈活性。定義格式:#define標(biāo)識(shí)符常量第四頁(yè),共六十四頁(yè),2022年,8月28日3.變量(1)變量:其值可以改變的量。在內(nèi)存中占據(jù)存儲(chǔ)單元,在該單元中存放變量的值,必須先定義,后使用。3num90_above***total房間名:變量名(標(biāo)識(shí)符)房間內(nèi)容:變量值程序里的一個(gè)變量可以看成是—個(gè)存儲(chǔ)數(shù)據(jù)的容器,它的功能就是可以存儲(chǔ)數(shù)據(jù)。第五頁(yè),共六十四頁(yè),2022年,8月28日變量的定義格式:類(lèi)型說(shuō)明符變量名表;定義的變量名稱(chēng)最好和存放數(shù)據(jù)的意義對(duì)應(yīng)。例:inta,b,c;/*說(shuō)明a,b,c為整型變量*/charcc;/*說(shuō)明cc為字符變量*/doublex,y;/*說(shuō)明x,y為雙精度實(shí)型變量*/第六頁(yè),共六十四頁(yè),2022年,8月28日#definePRICE30main(){intnum,total;

num=3;

total=num*PRICE;printf(“total=%d\n”,total);num=4;total=num*PRICE;printf(“total=%d\n”,total);}90numtotal對(duì)變量的基本操作有兩個(gè):1.“賦值”:向變量中存人數(shù)據(jù)值。2.“取值”:取得變量當(dāng)前值、以便在程序運(yùn)行過(guò)程中使用。34120*同一個(gè)變量一旦重新賦值,原來(lái)的值就不再存在。第七頁(yè),共六十四頁(yè),2022年,8月28日3.2.2整型數(shù)據(jù)及其表示1.整型類(lèi)型整型數(shù)據(jù)存儲(chǔ)示意圖:基本型屬性_占據(jù)內(nèi)存單元數(shù)屬性2_數(shù)據(jù)最高位意義intshort2bytes(短)signed有符號(hào)long4bytes(長(zhǎng))unsigned無(wú)符號(hào)第八頁(yè),共六十四頁(yè),2022年,8月28日取值范圍:數(shù)據(jù)類(lèi)型占據(jù)字節(jié)數(shù)二進(jìn)制位取值范圍int2Bytes16-32768~32767(-215~215-1)short[int]signed[int]signedshort[int]unsigned[int]0~65535(0~216-1)unsignedshort[int]long[int]4Bytes32-2147483648~2147483647(-231~231-1)signedlong[int]unsignedlong[int]0~4294967295(0

~232-1)第九頁(yè),共六十四頁(yè),2022年,8月28日2.整型常量十進(jìn)制:123,-456,0八進(jìn)制:以0開(kāi)頭(零),01,0120123=(123)8=(83)10十六進(jìn)制:以0x開(kāi)頭,0x123=(123)16=(291)10

0xF=(f)16=(15)10長(zhǎng)整型常量:123L,-456l二進(jìn)制位(bit):計(jì)算機(jī)中最小的存儲(chǔ)信息單位字節(jié)(Byte):八個(gè)二進(jìn)制位組成的存儲(chǔ)單元,是計(jì)算機(jī)中最小存取信息單位機(jī)器字(word):計(jì)算機(jī)中存取信息的基本單位,不同的計(jì)算機(jī)系統(tǒng)它的長(zhǎng)度是不同的第十頁(yè),共六十四頁(yè),2022年,8月28日補(bǔ)充:數(shù)的存放形式——補(bǔ)碼1.正數(shù)不變2.負(fù)數(shù)各位取反后+1,符號(hào)位置1

(34)10=(00100010)2(-34)10=(1011101)2+1(11011110)2

②4bytes數(shù)據(jù)x補(bǔ)碼=4294967295-x+1(-34)10補(bǔ)碼:(4294967295-34+1)10=(4294967262)10=(ffffffdf)16=(11111111111111111111111111011110)2①2bytes數(shù)據(jù)x補(bǔ)碼=65535-x+1(-34)10補(bǔ)碼:(65535-34+1)10=(65502)10=(ffdf)16=(1111111111011110)2第十一頁(yè),共六十四頁(yè),2022年,8月28日變量的定義格式:類(lèi)型說(shuō)明符變量名表;4.整型數(shù)據(jù)應(yīng)用中的幾個(gè)問(wèn)題一般放在一個(gè)函數(shù)的開(kāi)頭部分3.整型變量第十二頁(yè),共六十四頁(yè),2022年,8月28日問(wèn)題1:c沒(méi)有定義便使用;intc;問(wèn)題2:c應(yīng)為32770,但實(shí)際為–32766,發(fā)生溢出;問(wèn)題3:c應(yīng)為longint類(lèi)型;longintc;第十三頁(yè),共六十四頁(yè),2022年,8月28日3.2.3實(shí)型數(shù)據(jù)及其表示1.實(shí)型類(lèi)型

實(shí)型數(shù)據(jù)是以浮點(diǎn)數(shù)形式存儲(chǔ)的,在計(jì)算機(jī)中按指數(shù)形式。如圖例:0.123456×10-224位(帶符號(hào))8位(帶符號(hào))(float)(double)(longdouble)第十四頁(yè),共六十四頁(yè),2022年,8月28日2.實(shí)型常量十進(jìn)制形式:由數(shù)字和小數(shù)點(diǎn)組成;如:0.123,0.0,-54.0指數(shù)形式:由十進(jìn)制小數(shù)形式+指數(shù);如:123e3,123E-2注:e或E的前后面須有數(shù)字

不合法的指數(shù)形式:e3,2.1e3.5,.e3,e在實(shí)數(shù)常量尾部用后綴符f(F)代表單精度實(shí)數(shù)(7位有效位),l(L)代表雙精度實(shí)數(shù)(18—19位有效位);例:2.3f,-0.123f,2e-3f,-1.5e4f為單精度實(shí)常量1256.34L,-0.123l,2e3L為雙精度實(shí)常量3.實(shí)型變量第十五頁(yè),共六十四頁(yè),2022年,8月28日4.實(shí)型數(shù)據(jù)應(yīng)用中的誤差問(wèn)題由于機(jī)器存儲(chǔ)限制,會(huì)使實(shí)數(shù)產(chǎn)生誤差理想輸出:實(shí)際輸出:第十六頁(yè),共六十四頁(yè),2022年,8月28日3.2.3字符型數(shù)據(jù)及其表示1.字符型數(shù)據(jù)字符型數(shù)據(jù)在計(jì)算機(jī)中存儲(chǔ)的是ASCII碼,占用1byte。字符“A”的存儲(chǔ)形式實(shí)際上就是一個(gè)整型數(shù)65;它可以直接與整型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算、混合運(yùn)算,與整型變量相互賦值,字符型數(shù)據(jù)以字符或整數(shù)兩種形式輸出。以字符形式:先將ASCII碼值轉(zhuǎn)換為相應(yīng)的字符,再輸出;以整數(shù)形式:直接將ASCII的值作為整數(shù)輸出。第十七頁(yè),共六十四頁(yè),2022年,8月28日\(chéng)n換行(LF)\t橫向跳格(HT)\b退格(BS)\v豎向跳格\f走紙換頁(yè)(FF)\r回車(chē)(CR)\’單引號(hào)(‘)\\反斜杠字符(\)\”雙引號(hào)(“)\0,空(不是‘0’)\101字符‘A’(八進(jìn)制)\x41字符‘A’(十六進(jìn)制)2.字符型常量:用單引號(hào)括起來(lái)的一個(gè)字符:

普通字符:‘a(chǎn)’,‘A’,’1’等(大小寫(xiě)不同)

轉(zhuǎn)義序列:將反斜杠(\)后面的字符轉(zhuǎn)變?yōu)榱硗獾暮x。是一種特殊的字符常量。用的最多3.字符型變量:類(lèi)型名稱(chēng)——char:*錯(cuò)誤的字符常量表示:‘\’,‘015’,‘\\n’,”A”,‘a(chǎn)b’第十八頁(yè),共六十四頁(yè),2022年,8月28日“Howdoyoudo.”

“CHINA”

“$123.45”

“a”4.字符串常量:一對(duì)雙引號(hào)括起來(lái)的字符序列注意:C規(guī)定:每個(gè)字符串結(jié)尾加一“字符串結(jié)束”(‘\0’)

——系統(tǒng)自動(dòng)加上的;

“CHINA”:字符串如果需要存放在變量中,需用字符數(shù)組來(lái)存放(第7章)CHINA

\0字符串結(jié)束標(biāo)志

‘a(chǎn)’與“a”不同a‘a(chǎn)’a

\0“a”第十九頁(yè),共六十四頁(yè),2022年,8月28日5.字符數(shù)據(jù)的應(yīng)用舉例main(){inti;charc;i=‘a(chǎn)’;c=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}輸出結(jié)果:a,97a,97注意:在一定范圍內(nèi)通用(0----127)第二十頁(yè),共六十四頁(yè),2022年,8月28日3.2.5指針型數(shù)據(jù)及其表示變量與地址的概念程序中:inti=12;

floatk;

內(nèi)存中每個(gè)字節(jié)有一個(gè)編號(hào)-----地址內(nèi)存編譯或函數(shù)調(diào)用時(shí)為其分配內(nèi)存單元變量是對(duì)程序中數(shù)據(jù)存儲(chǔ)空間的抽象變量的地址….……...20002001200220050000200320043000i122000變量i_pointerk隨機(jī)指針變量指針型數(shù)據(jù):是一個(gè)變量在內(nèi)存中所對(duì)應(yīng)的存儲(chǔ)單元的地址值。如2000,2002等,指針變量:用來(lái)存放另一存儲(chǔ)單元的地址值。第二十一頁(yè),共六十四頁(yè),2022年,8月28日2.指針變量的定義合法標(biāo)識(shí)符指針的目標(biāo)變量的數(shù)據(jù)類(lèi)型表示定義指針變量不是‘*’運(yùn)算符例int

*p1,*p2;float*q;staticchar*name;注意:1、int*p1,*p2;與int*p1,p2;2、指針變量名是p1,p2,不是*p1,*p23、指針變量只能指向定義時(shí)所規(guī)定類(lèi)型的變量4、指針變量定義后,變量值不確定,應(yīng)用前必須先賦值格式:類(lèi)型說(shuō)明符*變量名;第二十二頁(yè),共六十四頁(yè),2022年,8月28日

&與*運(yùn)算符含義:

*取指針變量所指向單元的內(nèi)容

&取內(nèi)存變量的地址

互為逆運(yùn)算特性:?jiǎn)文窟\(yùn)算符優(yōu)先級(jí)為2

自右向左結(jié)合inti;

int*pc;

pc-----指針變量,它的內(nèi)容是地址量*pc----指針的目標(biāo)變量,它的內(nèi)容是數(shù)據(jù)&pc---指針變量占用內(nèi)存的地址….……...200020010000….3000指針變量pc,用&pc表示地址3000i整型變量i用&i表示地址20002000通過(guò)pc=&i將地址2000存入pc的單元中12通過(guò)*pc=12存入變量i的單元中200012pci,*pc&pc&i可簡(jiǎn)單畫(huà)為:第二十三頁(yè),共六十四頁(yè),2022年,8月28日3.2.6變量的初始化通常一個(gè)變量是先說(shuō)明,然后再賦值給它。例:intx,y;x=10;b=20;C規(guī)定:可以在定義變量的同時(shí)使變量初始化,例:

floatx=123.45;/*說(shuō)明x為實(shí)型量且賦初值為123.45*/

inta,c=10;/*說(shuō)明整型變量a,c,并僅給c賦初值10*/

inta1=10,b1=6;/*說(shuō)明整型變量a1,b1;分別賦不同初值*/

doublePai=3.14;/*說(shuō)明Pai為雙精度實(shí)型變量為賦初值為3.14*/

charch='a';/*說(shuō)明字符變量ch,并賦初值為'a'*/注意:對(duì)幾個(gè)變量賦同一個(gè)值,必須分別賦值例:inta=b=c=3;errorinta=3;b=3;c=3;ok

說(shuō)明:變量初始化不是在編譯階段完成的而是在程序執(zhí)行階段執(zhí)行本函數(shù)時(shí)賦以初值的例:inta=3;inta;a=3;

例:inta,b,c=5;inta,b,c;c=5;

第二十四頁(yè),共六十四頁(yè),2022年,8月28日變量初始化的應(yīng)用舉例main(){inta;intb;b=a+2;printf(“%d,%d\n”,a,b);

}注意:定義的變量在沒(méi)有初始化之前有一個(gè)不確定值。a=3;第二十五頁(yè),共六十四頁(yè),2022年,8月28日3.3算術(shù)運(yùn)算與賦值語(yǔ)句3.3.1c語(yǔ)言中的運(yùn)算規(guī)則1、運(yùn)算符

分類(lèi)(按操作數(shù)個(gè)數(shù)分):

單目運(yùn)算:一個(gè)運(yùn)算符連接一個(gè)運(yùn)算對(duì)象;(-a;!a;++a)

雙目運(yùn)算:一個(gè)運(yùn)算符連接兩個(gè)運(yùn)算對(duì)象;(23+12)

三目運(yùn)算:一個(gè)運(yùn)算符連接三個(gè)運(yùn)算對(duì)象;a<b?a=1:a=-1第二十六頁(yè),共六十四頁(yè),2022年,8月28日分類(lèi)(作用):算術(shù)運(yùn)算符 +-*/%自增自減運(yùn)算符++--賦值與賦值組合運(yùn)算符=+=-=*=/=%=<<=>>=|=&=^=關(guān)系運(yùn)算符><==>=<=!=邏輯運(yùn)算符 &&||!位運(yùn)算符 |^&<<>>~條件運(yùn)算符 ?:逗號(hào)運(yùn)算符 ,指針運(yùn)算符 *&求字節(jié)數(shù)運(yùn)算符 sizeof強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符(類(lèi)型)分量運(yùn)算符 .->下標(biāo)運(yùn)算符 []其它 ()第二十七頁(yè),共六十四頁(yè),2022年,8月28日2、表達(dá)式算術(shù)表達(dá)式 a+b-c自增自減表達(dá)式i++--i關(guān)系表達(dá)式a!=b(a+b)>(a-b)邏輯表達(dá)式 a&&(b==c)!a字位表達(dá)式 a<<2a&b賦值表達(dá)式a=3a*=2a=b=6逗號(hào)表達(dá)式 (a+b,a-b)3、優(yōu)先級(jí)和結(jié)合性(附錄A)

優(yōu)先級(jí):同一表達(dá)式中不同運(yùn)算符進(jìn)行計(jì)算時(shí)的先后次序

結(jié)合性:針對(duì)同一優(yōu)先級(jí)的多個(gè)運(yùn)算符而言,指同一表達(dá)式中相同優(yōu)先級(jí)的多個(gè)運(yùn)算應(yīng)遵循的運(yùn)算次序。第二十八頁(yè),共六十四頁(yè),2022年,8月28日表達(dá)式運(yùn)算時(shí)的關(guān)鍵問(wèn)題:(1)算符優(yōu)先極問(wèn)題(不同級(jí)別算符的計(jì)算次序)(2)算符結(jié)合次序(優(yōu)先級(jí)平級(jí)時(shí)的計(jì)算次序)(3)算符操作數(shù)個(gè)數(shù)(一目或二目算符)(4)算符對(duì)應(yīng)操作數(shù)類(lèi)型3.3.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式1、算術(shù)運(yùn)算符第二十九頁(yè),共六十四頁(yè),2022年,8月28日說(shuō)明:①“+”,“-”運(yùn)算符——單目運(yùn)算:取正、負(fù)值運(yùn)算;優(yōu)先級(jí)高

雙目運(yùn)算:加、減運(yùn)算;優(yōu)先級(jí)低②除法運(yùn)算“/”——

整數(shù)(字符)相除結(jié)果是整型(商),小數(shù)部分全部舍去

實(shí)數(shù)相除,所得的商也為實(shí)數(shù)。例如:1/3=0只取結(jié)果的整數(shù)部分0,舍去0.33333315/4=3只取結(jié)果的整數(shù)部分3,舍去0.75

1.0/3=0.33333313/4.0=3.250000

整數(shù)相除時(shí),若不能整除將造成誤差,要避免整數(shù)直接相除。③模運(yùn)算"%"也稱(chēng)為求余運(yùn)算。要求兩個(gè)運(yùn)算對(duì)象都為整型,其結(jié)果是整數(shù)除法的余數(shù)。例如:

5%10=510%3=1-10%3=-1第三十頁(yè),共六十四頁(yè),2022年,8月28日

算術(shù)運(yùn)算符的優(yōu)先級(jí)及結(jié)合性如下:例如表達(dá)式

x/(67-(12+y)*a)

的運(yùn)算順序是:2、算術(shù)表達(dá)式c語(yǔ)言的算術(shù)表達(dá)式由算術(shù)運(yùn)算符、常數(shù)、變量、函數(shù)和園括號(hào)組成,其基本形式與數(shù)學(xué)上的算術(shù)表達(dá)式類(lèi)似。例如:

3十512.34—23.65*2-5*(18%4+6)x/(67-(12+y)*a)第三十一頁(yè),共六十四頁(yè),2022年,8月28日帶函數(shù)調(diào)用的算術(shù)表達(dá)式。以數(shù)學(xué)函數(shù)的調(diào)用為例,c語(yǔ)言把數(shù)學(xué)計(jì)算中常用的計(jì)算公式(或算法)抽象定義為一個(gè)個(gè)的函數(shù),這些函數(shù)的集合構(gòu)成了C語(yǔ)言的數(shù)學(xué)庫(kù)(見(jiàn)附錄c),在程序中用到相應(yīng)的函數(shù)時(shí)只要直接調(diào)用即可。例如,數(shù)學(xué)表達(dá)式:sin(x)+cos(y/2)c語(yǔ)言算術(shù)表達(dá)式:sin(x)+cos(y/2)

函數(shù)庫(kù):(#include<math.h>)

例3-6下列數(shù)學(xué)表達(dá)式:對(duì)應(yīng)的c語(yǔ)言算術(shù)表達(dá)式為:第三十二頁(yè),共六十四頁(yè),2022年,8月28日3.3.3自增、自減運(yùn)算符(++、--)(1)

++i和i++

最后都使i=i+1,但順序不同,意義不同例:inti=3,j;對(duì)于j=++i;相當(dāng)于①i++;②j=i;

對(duì)于j=i++;相當(dāng)于①j=i;②i++;(2)

++,--只能用于變量(不能用于常量和表達(dá)式)

++3,++(a+b),(x+5)++

×

++i(--i):先將i的值加(減)1,然后使用i

i++(i--):先使用i,然后將i的值加(減)1開(kāi)始結(jié)果3i4j43i4j3(3)用于++,--運(yùn)算的可以是有序類(lèi)型的變量(4)

++,--的結(jié)合性是自右向左的。第三十三頁(yè),共六十四頁(yè),2022年,8月28日例題1:inti=3,k;k=(i++)+(i++)+(i++);則:k=?i=?相當(dāng)于①k=i+i+i;k=9

②i++;i++;i++;i=6例題2:inti=3,k;k=(++i)+(++i)+(++i);則:k=?i=?相當(dāng)于①i++;i++;i++;i=6②k=i+i+i;k=18例題3:若i=3則printf(“%d”,-i++);則:打???;i=?

輸出:-3(然后,i增值為4)例題4:若i=3則printf(“%d”,i+++++i);則:打???;i=?1.i++

+++i----->取i的地址2.i+++++i----->i值加1為4

3.i+++

++i----->1的值(4)+2的值(4)得3的值8。輸出:84.表達(dá)式計(jì)算完成后,求1.i++的i自加1。i增值為:5

一般寫(xiě)為:(i++)+(++i)。。第三十四頁(yè),共六十四頁(yè),2022年,8月28日

3.3.4賦值運(yùn)算符和賦值表達(dá)式1、

賦值運(yùn)算符(=)計(jì)算賦值運(yùn)算符“=”右邊表達(dá)式的值,并將計(jì)算結(jié)果賦給“=”左邊的變量。2、賦值表達(dá)式:變量=表達(dá)式①計(jì)算賦值運(yùn)算符右邊“表達(dá)式”的值,②將計(jì)算結(jié)果賦值給賦值運(yùn)算符左邊的“變量”,③賦值表達(dá)式的值就是賦值運(yùn)算符左邊“變量”的值第三十五頁(yè),共六十四頁(yè),2022年,8月28日3、賦值運(yùn)算符按自右至左結(jié)合順序(右結(jié)合)例1:inta=2,b=3,c=4;a=b=c=51.a=b=c=5:c=5,表達(dá)式c=5值為52.a=b=c=5:b=5,表達(dá)式b=c=5值為53.a=b=c=5:a=5,表達(dá)式a=b=c=5值為5

例2:a=b=4+(c=5)1.a=b=4+(c=5):c=5,表達(dá)式c=5值為5

2.a=b=4+(c=5):表達(dá)式4+(c=5)值為93.a=b=4+(c=5):b=9,表達(dá)式b=4+(c=5)值為94.a=b=4+(c=5):a=9,表達(dá)式a=b=4+(c=5)值為9第三十六頁(yè),共六十四頁(yè),2022年,8月28日4、賦值時(shí)的類(lèi)型轉(zhuǎn)換

當(dāng)賦值運(yùn)算符兩側(cè)類(lèi)型不一致,賦值時(shí)要進(jìn)行類(lèi)型轉(zhuǎn)換。其轉(zhuǎn)換工作由c編譯自動(dòng)完成。轉(zhuǎn)換原則是以“=”左邊的變量類(lèi)型為準(zhǔn),即將“=”右邊的值轉(zhuǎn)換為與“=”左邊的變量類(lèi)型—致(類(lèi)型轉(zhuǎn)換)。

例intb=32769;inti=256;floata=3.5,a1;charc=‘A’;a1=i;i=a;c=i;

則i=3a=3.500000b=-32767a1=256.000000c=0①float→int直接舍去浮點(diǎn)數(shù)地小數(shù)部分(存儲(chǔ)空間縮小)②int→float按浮點(diǎn)數(shù)相應(yīng)有效位數(shù)補(bǔ)小數(shù)點(diǎn)后地有效0(擴(kuò)大)③double→float截取前7位double數(shù)據(jù)給float變量(縮小)④int→char截取int數(shù)據(jù)地低8位給char變量(縮小)第三十七頁(yè),共六十四頁(yè),2022年,8月28日

3.3.5組合賦值運(yùn)算符和組合賦值表達(dá)式1、組合賦值運(yùn)算符

在賦值符(=)之前加上其它運(yùn)算符構(gòu)成組合運(yùn)算符:

運(yùn)算符=10種:+=,-=,*=,/=,%=

<<=,>>=,&=,^=,|=

2、組合賦值表達(dá)式

格式:變量名組合賦值運(yùn)算符表達(dá)式

功能:變量名=變量名運(yùn)算符表達(dá)例:a+=3a=a+3x*=y+8x=x*

(y+8)=右邊為一整體,而不等于x=x*y+8第三十八頁(yè),共六十四頁(yè),2022年,8月28日5a=55c=5,b=c(5),a=b(5)11c=6,a=11(5+6)10b=4,c=6,a=b+c=4+6=1024-12a-=a*a(a=3-3*3=-6)a+=-6(a=a+a=-12)3、

賦值運(yùn)算符按自右至左結(jié)合順序表達(dá)式表達(dá)式值各變量值求解過(guò)程a=5a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a*=3+5a+=a-=a*ainta=3,b,c;第三十九頁(yè),共六十四頁(yè),2022年,8月28日a=b=d=x=y=a=c=*課后作業(yè)例:inta=3,b,d=012;charc;floatx,y;

表達(dá)式各變量的值1)a=2.82)b=3+d++3)x=3.6+3/54)y=(d=4,d+2,d--)5)a+=a-=a*=a6)c=‘d’-27)數(shù)學(xué)表達(dá)式,用C語(yǔ)言表達(dá)式表達(dá)正確的是:(1)a/(b+c)*d(2)a/(b+c)*1/d(3)a/(c+b)/d(4)a/d/(b+c)a(b+c).d第四十頁(yè),共六十四頁(yè),2022年,8月28日3.4.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式

1關(guān)系運(yùn)算符優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)同級(jí)左結(jié)合3.4關(guān)系運(yùn)算符和關(guān)系表達(dá)式<小于<=小于等于>大于>=大于等于==等于!=不等于關(guān)系表達(dá)式格式:表達(dá)式1關(guān)系運(yùn)算符表達(dá)式2例:3>45>=4x>x+1關(guān)系表達(dá)式的值:“真”——條件滿足,用1表示

“假”——條件不滿足,用0表示第四十一頁(yè),共六十四頁(yè),2022年,8月28日例:若a=3,b=2,c=1a>b(a>b)==cb+c<ad=a>bf=a>b>c

‘c’>’d’值“真”1“真”1“假”0d=1f=0“假”0(高)(低)優(yōu)先次序:算術(shù)運(yùn)算符關(guān)系運(yùn)算符

賦值運(yùn)算符例:c>a+bc>(a+b)a>b!=c(a>b)!=ca==b<ca==(b<c)a=b>ca=(b>c)如何表示:0<=x<=20?第四十二頁(yè),共六十四頁(yè),2022年,8月28日3.4.2邏輯運(yùn)算符和邏輯表達(dá)式1邏輯運(yùn)算符和邏輯表達(dá)式&&邏輯與:雙目運(yùn)算符

例:(a>b)&&(x>y)||

邏輯或:雙目運(yùn)算符

例:(a>b)||(x>y)!邏輯非:一目運(yùn)算符例:!

(a>b)邏輯運(yùn)算“真值表”aba&&ba||b!a!b真1真1真1真1假0假0真1假0假0真1假0真1假0真1假0真1真1假0假0假0假0假0真1真1a和b可以是一個(gè)變量、常量或運(yùn)算表達(dá)式第四十三頁(yè),共六十四頁(yè),2022年,8月28日運(yùn)算符種類(lèi)優(yōu)先次序

!非算術(shù)運(yùn)算符關(guān)系運(yùn)算符

&&

||賦值運(yùn)算符高低111110(a>b)&&(x>y)a>b&&x>y(y||b)&&(y||b)y||b&&y||b!a||a>ba>=10&&b&&x++a>=10||b||x++++a||y&&++x例:inta=3,b=1,x=2,y=0;邏輯表達(dá)式值說(shuō)明:(1)邏輯運(yùn)算結(jié)果:只能為“真”(1)或“假”(0),不可能是其它數(shù)值11第四十四頁(yè),共六十四頁(yè),2022年,8月28日(2)邏輯表達(dá)式中的運(yùn)算對(duì)象(操作數(shù))可以是0(“假”)或任何非零的數(shù)值(“真”)111301自左至右掃描例:

5>3&&2||8<4-!0(3)邏輯表達(dá)式求解并非一定要所有的邏輯運(yùn)算符都被執(zhí)行,會(huì)出現(xiàn)“短路”現(xiàn)象例:設(shè)a=1,b=2,c=3,d=4,m=1,n=1(m=a>b)&&(n=c>d)00001mn第四十五頁(yè),共六十四頁(yè),2022年,8月28日例:inta=2,b=3,c=0,d=4;

a++&&b++;c++&&d++;a=3b=40c=1d=4例:inta=2,b=3,c=0,d=4;

a++||b++;c++||d++;a=3b=31c=1d=5第四十六頁(yè),共六十四頁(yè),2022年,8月28日(4)邏輯表達(dá)式的應(yīng)用例1:判別某一年year是否閏年。①能被4整除,但不能被100整除:

或②能被400整除:閏年條件:例2:寫(xiě)出判斷變量C的值是否為……的條件表達(dá)式

小寫(xiě)字母

數(shù)字字符

被3除余2且被5除余1

奇數(shù)

偶數(shù)c>=‘a(chǎn)’&&c<=‘z’

c>=‘0’&&c<=‘9’c%3==2&&c%5==1c%2==1或c%2c%2==0或!(c%2)year%4==0且year%100!=0year%400==0(year%4==0&&year%100!=0)||year%400==0第四十七頁(yè),共六十四頁(yè),2022年,8月28日例3、寫(xiě)出判斷點(diǎn)在圖形內(nèi)的條件表達(dá)式答案:x>=-1&&x<=1&&y>=-1&&y<=1(0,1)(1,0)(-1,0)(0,-1)答案:x<4&&x>-4答案:x<-4||x>4例4、把下面的數(shù)學(xué)表達(dá)式轉(zhuǎn)化成C語(yǔ)言表達(dá)式

|x|<4

|x|>40=<

x<=20答案:x>=0&&x<=20第四十八頁(yè),共六十四頁(yè),2022年,8月28日3.4.3條件運(yùn)算符與條件表達(dá)式1、形式:條件表達(dá)式

?表達(dá)式1

:表達(dá)式2

條件運(yùn)算符:三目運(yùn)算符(三個(gè)操作對(duì)象)2、執(zhí)行順序:先計(jì)算條件表達(dá)式的值,若值為非0,則計(jì)算表達(dá)式1的值,并將表達(dá)式1的值作為整個(gè)條件表達(dá)式的結(jié)果;若條件表達(dá)式的值為0,則計(jì)算表達(dá)式2的值,并將表達(dá)式2的值作為整個(gè)條件表達(dá)式的結(jié)果3、優(yōu)先級(jí)算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符條件運(yùn)算符賦值運(yùn)算符高低max=(a>b)

?a

:b(a>b)?a+b:a-b第四十九頁(yè),共六十四頁(yè),2022年,8月28日4、結(jié)合方向:自右至左a>b?a:c>d?c:d等同于

a>b?a:(c>d?c:d)若a=1,b=2,c=3,d=4,有:4例:求一個(gè)數(shù)的絕對(duì)值:例:將小寫(xiě)字母轉(zhuǎn)換成大寫(xiě):x=x>=0?x:-x;c=(c>=’a’&&c<=‘z’)?c-32:c;第五十頁(yè),共六十四頁(yè),2022年,8月28日3.5位運(yùn)算應(yīng)用:許多計(jì)算機(jī)硬件設(shè)備的狀態(tài)信息通常是用二進(jìn)制串表示的,則對(duì)硬件設(shè)備進(jìn)行操作,也要送出一個(gè)二進(jìn)制位串的方式發(fā)出的命令。3.5.1位運(yùn)算符一個(gè)二進(jìn)制位只能取值為0或者1;位運(yùn)算的運(yùn)算對(duì)象只能是整型(int)或字符型(char)的整數(shù);位運(yùn)算是對(duì)運(yùn)算量的每一個(gè)二進(jìn)制位分別進(jìn)行操作的;操作符和優(yōu)先級(jí):優(yōu)先級(jí)相同同級(jí)左結(jié)合~按位求反<<按位左移>>按位右移&按位與^按位異或|按位或高低第五十一頁(yè),共六十四頁(yè),2022年,8月28日3.5.2按位邏輯運(yùn)算1.按位與──&

(1)格式:x&y

(2)規(guī)則:對(duì)應(yīng)位均為1時(shí)才為1,否則為0:3&9=1。

例:c=a&b

a:10101001

0101

0111

&b:00000000

1111

1011

c:00000000

0101

0011

(3)用途:將指定位&0,實(shí)現(xiàn)清0以屏蔽原先的數(shù)據(jù);(例3-11)

將指定位&1,保留原數(shù)據(jù)對(duì)應(yīng)位

(例3-12)2.按位或──|

(1)格式:x|y

(2)規(guī)則:對(duì)應(yīng)位均為0時(shí)才為0,否則為1:3|9=11。例:c=a|ba:10101001

01010111 |b:11111111

11111011c:11111111

11111111(3)用途:將指定位|1,實(shí)現(xiàn)置1;

(例3-13)第五十二頁(yè),共六十四頁(yè),2022年,8月28日3.按位異或──^(1)格式:x^y(2)規(guī)則:對(duì)應(yīng)位相同時(shí)為0不同時(shí)為1:

0^0=0,0^1=1,1^0=1,1^1=1例:c=a^ba:1010100101010111^b:0110000011111011c:1100100110101100

(3)用途:將指定位^1,實(shí)現(xiàn)使特定位翻轉(zhuǎn)其余位不變;(例3-14)4.按位取反──~(1)格式:~x(2)規(guī)則:各位翻轉(zhuǎn),即原來(lái)為1的位變成0,原來(lái)為0的位變成1;例:c=~a~a:00000000000001117

c:1111111111111000

-8的補(bǔ)碼特點(diǎn):按位求反=整數(shù)求負(fù)-1注意:對(duì)c=-a有對(duì)c=!a有c=-7c=0第五十三頁(yè),共六十四頁(yè),2022年,8月28日3.5.3移位運(yùn)算1.按位左移──<<(1)格式:x<<位數(shù)(2)規(guī)則:使操作數(shù)的各位左移,低位補(bǔ)0,高位溢出:例:5<<2=20即:00000101

左移2位:

0000010100

結(jié)果為202.按位右移──>>(1)格式:x>>位數(shù)(2)規(guī)則:使操作數(shù)的各位右移,移出的低位舍棄;高位:1)對(duì)無(wú)符號(hào)數(shù)和有符號(hào)中的正數(shù),補(bǔ)0;2)有符號(hào)數(shù)中的負(fù)數(shù),補(bǔ)1。例:5>>2=1即:00000101

右移2位:

0000000101

例:-5>>2=-2即:11111011

右移2位:

1111111010結(jié)果為1結(jié)果為-2第五十四頁(yè),共六十四頁(yè),2022年,8月28日3.5.4位運(yùn)算賦值運(yùn)算符除按位取反運(yùn)算外,其余5個(gè)位運(yùn)算符均可與賦值運(yùn)算符一起,構(gòu)成復(fù)合賦值運(yùn)算符:

&=、|+、^=、<<=、>>=如:x&=y相當(dāng)于:x=x&yx<<=2x=x<<2x>>=3x=x>>3x^=5x=x^5第五十五頁(yè),共六十四頁(yè),2022年,8月28日例1a=3*5,a*4a=3*5,a*4,a+5例2x=(a=3,6*3)y=(x=123,x+x,x+=100-x)例3a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);//a=15,表達(dá)式值60//a=15,表達(dá)式值20//賦值表達(dá)式,表達(dá)式值18,x=18//表達(dá)式值100,y=100//1,2,3//3,2,3逗號(hào)運(yùn)算符和表達(dá)式形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n計(jì)算:先求解表達(dá)式1,再求解表達(dá)式2,……結(jié)合性:從左向右優(yōu)先級(jí):15逗號(hào)表達(dá)式的值:等于表達(dá)式n的值用途:常用于循環(huán)for語(yǔ)句中3.6其他運(yùn)算第五十六頁(yè),共六十四頁(yè),2022年,8月28日3.6.5強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符(type)表達(dá)式用括號(hào)括起來(lái)類(lèi)型轉(zhuǎn)換方式:

自動(dòng)轉(zhuǎn)換:

2+3.5+‘a(chǎn)’

強(qiáng)制轉(zhuǎn)換:其作用是進(jìn)行數(shù)據(jù)類(lèi)型的強(qiáng)制轉(zhuǎn)換。

(type)是單目算符。

強(qiáng)制轉(zhuǎn)換形式:

(類(lèi)型名)(表達(dá)式)

注意:若為表達(dá)式,應(yīng)該用括號(hào)括起來(lái)例:(double)a

(int)(x+y)

(float)(5%3)第五十七頁(yè),共六十四頁(yè),2022年,8月28日

溫馨提示

  • 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)論