




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第三章數(shù)據(jù)類型運算符第一頁,共六十四頁,編輯于2023年,星期四3.1數(shù)據(jù)與數(shù)據(jù)類型3.1.1什么是數(shù)據(jù)和數(shù)據(jù)類型
數(shù)據(jù)是程序加工、處理的對象,也是加工的結果。
數(shù)據(jù)類型是程序語言中具有同樣的性質(zhì)的數(shù)據(jù)集合.
整型 int(integer的縮寫)
字符型
char(character的縮寫)
單精度型
float
基本類型
實型(浮點型)
雙精度型
double
數(shù)組類數(shù)據(jù)類型
構造類結構體struct共用體union枚舉類enum
指針類
空類型
void第二頁,共六十四頁,編輯于2023年,星期四3.2C語言的基本數(shù)據(jù)類型及其表示3.2.1常量與變量1.常量——在程序運行中其值不能被改變的量常量區(qū)分為不同類型。如
123,456:
整型常量
’a’,’A’,’b’,’1’,’0’:
字符常量123.0,3.5:實型常量
“123”,“A”:字符串常量第三頁,共六十四頁,編輯于2023年,星期四例3_1已知圓半徑r,求圓面積和周長的值。#defineπ3.14159main(){intarea,perimeter;intr;r=3;area=π*r*r;perimeter=2*π*r;printf(“area=%d\n”,area);printf(“perimeter=%d\n”,perimeter);}符號PI代替常量3.14159,
稱為符號常量符號常量的定義是在編譯預處理語句里進行的,稱為宏定義符號常量一般用大寫
符號常量在其作用域內(nèi)值不能改變(不能被賦值)
PI=35;符號常量在編譯時被常量替換2.符號常量——用一個標識符代表一個常量,提高程序的可修改性和靈活性。定義格式:#define標識符常量第四頁,共六十四頁,編輯于2023年,星期四3.變量(1)變量:其值可以改變的量。在內(nèi)存中占據(jù)存儲單元,在該單元中存放變量的值,必須先定義,后使用。3num90_above***total房間名:變量名(標識符)房間內(nèi)容:變量值程序里的一個變量可以看成是—個存儲數(shù)據(jù)的容器,它的功能就是可以存儲數(shù)據(jù)。第五頁,共六十四頁,編輯于2023年,星期四變量的定義格式:類型說明符變量名表;定義的變量名稱最好和存放數(shù)據(jù)的意義對應。例:inta,b,c;/*說明a,b,c為整型變量*/charcc;/*說明cc為字符變量*/doublex,y;/*說明x,y為雙精度實型變量*/第六頁,共六十四頁,編輯于2023年,星期四#definePRICE30main(){intnum,total;
num=3;
total=num*PRICE;printf(“total=%d\n”,total);num=4;total=num*PRICE;printf(“total=%d\n”,total);}90numtotal對變量的基本操作有兩個:1.“賦值”:向變量中存人數(shù)據(jù)值。2.“取值”:取得變量當前值、以便在程序運行過程中使用。34120*同一個變量一旦重新賦值,原來的值就不再存在。第七頁,共六十四頁,編輯于2023年,星期四3.2.2整型數(shù)據(jù)及其表示1.整型類型整型數(shù)據(jù)存儲示意圖:基本型屬性_占據(jù)內(nèi)存單元數(shù)屬性2_數(shù)據(jù)最高位意義intshort2bytes(短)signed有符號long4bytes(長)unsigned無符號第八頁,共六十四頁,編輯于2023年,星期四取值范圍:數(shù)據(jù)類型占據(jù)字節(jié)數(shù)二進制位取值范圍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)第九頁,共六十四頁,編輯于2023年,星期四2.整型常量十進制:123,-456,0八進制:以0開頭(零),01,0120123=(123)8=(83)10十六進制:以0x開頭,0x123=(123)16=(291)10
0xF=(f)16=(15)10長整型常量:123L,-456l二進制位(bit):計算機中最小的存儲信息單位字節(jié)(Byte):八個二進制位組成的存儲單元,是計算機中最小存取信息單位機器字(word):計算機中存取信息的基本單位,不同的計算機系統(tǒng)它的長度是不同的第十頁,共六十四頁,編輯于2023年,星期四補充:數(shù)的存放形式——補碼1.正數(shù)不變2.負數(shù)各位取反后+1,符號位置1
(34)10=(00100010)2(-34)10=(1011101)2+1(11011110)2
②4bytes數(shù)據(jù)x補碼=4294967295-x+1(-34)10補碼:(4294967295-34+1)10=(4294967262)10=(ffffffdf)16=(11111111111111111111111111011110)2①2bytes數(shù)據(jù)x補碼=65535-x+1(-34)10補碼:(65535-34+1)10=(65502)10=(ffdf)16=(1111111111011110)2第十一頁,共六十四頁,編輯于2023年,星期四變量的定義格式:類型說明符變量名表;4.整型數(shù)據(jù)應用中的幾個問題一般放在一個函數(shù)的開頭部分3.整型變量第十二頁,共六十四頁,編輯于2023年,星期四問題1:c沒有定義便使用;intc;問題2:c應為32770,但實際為–32766,發(fā)生溢出;問題3:c應為longint類型;longintc;第十三頁,共六十四頁,編輯于2023年,星期四3.2.3實型數(shù)據(jù)及其表示1.實型類型
實型數(shù)據(jù)是以浮點數(shù)形式存儲的,在計算機中按指數(shù)形式。如圖例:0.123456×10-224位(帶符號)8位(帶符號)(float)(double)(longdouble)第十四頁,共六十四頁,編輯于2023年,星期四2.實型常量十進制形式:由數(shù)字和小數(shù)點組成;如:0.123,0.0,-54.0指數(shù)形式:由十進制小數(shù)形式+指數(shù);如:123e3,123E-2注:e或E的前后面須有數(shù)字
不合法的指數(shù)形式:e3,2.1e3.5,.e3,e在實數(shù)常量尾部用后綴符f(F)代表單精度實數(shù)(7位有效位),l(L)代表雙精度實數(shù)(18—19位有效位);例:2.3f,-0.123f,2e-3f,-1.5e4f為單精度實常量1256.34L,-0.123l,2e3L為雙精度實常量3.實型變量第十五頁,共六十四頁,編輯于2023年,星期四4.實型數(shù)據(jù)應用中的誤差問題由于機器存儲限制,會使實數(shù)產(chǎn)生誤差理想輸出:a=12345.6789,b=0.1234567891234567899e15實際輸出:a=12345.678711,b=123456789123456.797000第十六頁,共六十四頁,編輯于2023年,星期四3.2.3字符型數(shù)據(jù)及其表示1.字符型數(shù)據(jù)字符型數(shù)據(jù)在計算機中存儲的是ASCII碼,占用1byte。字符“A”的存儲形式實際上就是一個整型數(shù)65;它可以直接與整型數(shù)據(jù)進行算術運算、混合運算,與整型變量相互賦值,字符型數(shù)據(jù)以字符或整數(shù)兩種形式輸出。以字符形式:先將ASCII碼值轉(zhuǎn)換為相應的字符,再輸出;以整數(shù)形式:直接將ASCII的值作為整數(shù)輸出。第十七頁,共六十四頁,編輯于2023年,星期四\n換行(LF)\t橫向跳格(HT)\b退格(BS)\v豎向跳格\f走紙換頁(FF)\r回車(CR)\’單引號(‘)\\反斜杠字符(\)\”雙引號(“)\0,空(不是‘0’)\101字符‘A’(八進制)\x41字符‘A’(十六進制)2.字符型常量:用單引號括起來的一個字符:
普通字符:‘a(chǎn)’,‘A’,’1’等(大小寫不同)
轉(zhuǎn)義序列:將反斜杠(\)后面的字符轉(zhuǎn)變?yōu)榱硗獾暮x。是一種特殊的字符常量。用的最多3.字符型變量:類型名稱——char:*錯誤的字符常量表示:‘\’,‘015’,‘\\n’,”A”,‘a(chǎn)b’第十八頁,共六十四頁,編輯于2023年,星期四“Howdoyoudo.”
“CHINA”
“$123.45”
“a”4.字符串常量:一對雙引號括起來的字符序列注意:C規(guī)定:每個字符串結尾加一“字符串結束”(‘\0’)
——系統(tǒng)自動加上的;
“CHINA”:字符串如果需要存放在變量中,需用字符數(shù)組來存放(第7章)CHINA
\0字符串結束標志
‘a(chǎn)’與“a”不同a‘a(chǎn)’a
\0“a”第十九頁,共六十四頁,編輯于2023年,星期四5.字符數(shù)據(jù)的應用舉例main(){inti;charc;i=‘a(chǎn)’;c=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}輸出結果:a,97a,97注意:在一定范圍內(nèi)通用(0----127)第二十頁,共六十四頁,編輯于2023年,星期四3.2.5指針型數(shù)據(jù)及其表示變量與地址的概念程序中:inti=12;
floatk;
內(nèi)存中每個字節(jié)有一個編號-----地址內(nèi)存編譯或函數(shù)調(diào)用時為其分配內(nèi)存單元變量是對程序中數(shù)據(jù)存儲空間的抽象變量的地址….……...20002001200220050000200320043000i122000變量i_pointerk隨機指針變量指針型數(shù)據(jù):是一個變量在內(nèi)存中所對應的存儲單元的地址值。如2000,2002等,指針變量:用來存放另一存儲單元的地址值。第二十一頁,共六十四頁,編輯于2023年,星期四2.指針變量的定義合法標識符指針的目標變量的數(shù)據(jù)類型表示定義指針變量不是‘*’運算符例int
*p1,*p2;float*q;staticchar*name;注意:1、int*p1,*p2;與int*p1,p2;2、指針變量名是p1,p2,不是*p1,*p23、指針變量只能指向定義時所規(guī)定類型的變量4、指針變量定義后,變量值不確定,應用前必須先賦值格式:類型說明符*變量名;第二十二頁,共六十四頁,編輯于2023年,星期四3.6.1
&與*運算符含義:
*取指針變量所指向單元的內(nèi)容
&取內(nèi)存變量的地址
互為逆運算特性:單目運算符優(yōu)先級為2
自右向左結合inti;
int*pc;
pc-----指針變量,它的內(nèi)容是地址量*pc----指針的目標變量,它的內(nèi)容是數(shù)據(jù)&pc---指針變量占用內(nèi)存的地址….……...200020010000….3000指針變量pc,用&pc表示地址3000i整型變量i用&i表示地址20002000通過pc=&i將地址2000存入pc的單元中12通過*pc=12存入變量i的單元中200012pci,*pc&pc&i可簡單畫為:第二十三頁,共六十四頁,編輯于2023年,星期四3.2.6變量的初始化通常一個變量是先說明,然后再賦值給它。例:intx,y;x=10;b=20;C規(guī)定:可以在定義變量的同時使變量初始化,例:
floatx=123.45;/*說明x為實型量且賦初值為123.45*/
inta,c=10;/*說明整型變量a,c,并僅給c賦初值10*/
inta1=10,b1=6;/*說明整型變量a1,b1;分別賦不同初值*/
doublePai=3.14;/*說明Pai為雙精度實型變量為賦初值為3.14*/
charch='a';/*說明字符變量ch,并賦初值為'a'*/注意:對幾個變量賦同一個值,必須分別賦值例:inta=b=c=3;errorinta=3;b=3;c=3;ok
說明:變量初始化不是在編譯階段完成的而是在程序執(zhí)行階段執(zhí)行本函數(shù)時賦以初值的例:inta=3;inta;a=3;
例:inta,b,c=5;inta,b,c;c=5;
第二十四頁,共六十四頁,編輯于2023年,星期四變量初始化的應用舉例main(){inta;intb;b=a+2;printf(“%d,%d\n”,a,b);
}注意:定義的變量在沒有初始化之前有一個不確定值。a=3;第二十五頁,共六十四頁,編輯于2023年,星期四3.3算術運算與賦值語句3.3.1c語言中的運算規(guī)則1、運算符
分類(按操作數(shù)個數(shù)分):
單目運算:一個運算符連接一個運算對象;(-a;!a;++a)
雙目運算:一個運算符連接兩個運算對象;(23+12)
三目運算:一個運算符連接三個運算對象;a<b?a=1:a=-1第二十六頁,共六十四頁,編輯于2023年,星期四分類(作用):算術運算符 +-*/%自增自減運算符++--賦值與賦值組合運算符=+=-=*=/=%=<<=>>=|=&=^=關系運算符><==>=<=!=邏輯運算符 &&||!位運算符 |^&<<>>~條件運算符 ?:逗號運算符 ,指針運算符 *&求字節(jié)數(shù)運算符 sizeof強制類型轉(zhuǎn)換運算符(類型)分量運算符 .->下標運算符 []其它 ()第二十七頁,共六十四頁,編輯于2023年,星期四2、表達式算術表達式 a+b-c自增自減表達式i++--i關系表達式a!=b(a+b)>(a-b)邏輯表達式 a&&(b==c)!a字位表達式 a<<2a&b賦值表達式a=3a*=2a=b=6逗號表達式 (a+b,a-b)3、優(yōu)先級和結合性(附錄A)
優(yōu)先級:同一表達式中不同運算符進行計算時的先后次序
結合性:針對同一優(yōu)先級的多個運算符而言,指同一表達式中相同優(yōu)先級的多個運算應遵循的運算次序。第二十八頁,共六十四頁,編輯于2023年,星期四表達式運算時的關鍵問題:(1)算符優(yōu)先極問題(不同級別算符的計算次序)(2)算符結合次序(優(yōu)先級平級時的計算次序)(3)算符操作數(shù)個數(shù)(一目或二目算符)(4)算符對應操作數(shù)類型3.3.2算術運算符和算術表達式1、算術運算符第二十九頁,共六十四頁,編輯于2023年,星期四說明:①“+”,“-”運算符——單目運算:取正、負值運算;優(yōu)先級高
雙目運算:加、減運算;優(yōu)先級低②除法運算“/”——
整數(shù)(字符)相除結果是整型(商),小數(shù)部分全部舍去
實數(shù)相除,所得的商也為實數(shù)。例如:1/3=0只取結果的整數(shù)部分0,舍去0.33333315/4=3只取結果的整數(shù)部分3,舍去0.75
1.0/3=0.33333313/4.0=3.250000
整數(shù)相除時,若不能整除將造成誤差,要避免整數(shù)直接相除。③模運算"%"也稱為求余運算。要求兩個運算對象都為整型,其結果是整數(shù)除法的余數(shù)。例如:
5%10=510%3=1-10%3=-1第三十頁,共六十四頁,編輯于2023年,星期四
算術運算符的優(yōu)先級及結合性如下:例如表達式
x/(67-(12+y)*a)
的運算順序是:2、算術表達式c語言的算術表達式由算術運算符、常數(shù)、變量、函數(shù)和園括號組成,其基本形式與數(shù)學上的算術表達式類似。例如:
3十512.34—23.65*2-5*(18%4+6)x/(67-(12+y)*a)第三十一頁,共六十四頁,編輯于2023年,星期四帶函數(shù)調(diào)用的算術表達式。以數(shù)學函數(shù)的調(diào)用為例,c語言把數(shù)學計算中常用的計算公式(或算法)抽象定義為一個個的函數(shù),這些函數(shù)的集合構成了C語言的數(shù)學庫(見附錄c),在程序中用到相應的函數(shù)時只要直接調(diào)用即可。例如,數(shù)學表達式:sin(x)+cos(y/2)c語言算術表達式:sin(x)+cos(y/2)
函數(shù)庫:(#include<math.h>)
例3-6下列數(shù)學表達式:對應的c語言算術表達式為:第三十二頁,共六十四頁,編輯于2023年,星期四3.3.3自增、自減運算符(++、--)(1)
++i和i++
最后都使i=i+1,但順序不同,意義不同例:inti=3,j;對于j=++i;相當于①i++;②j=i;
對于j=i++;相當于①j=i;②i++;(2)
++,--只能用于變量(不能用于常量和表達式)
++3,++(a+b),(x+5)++
×
++i(--i):先將i的值加(減)1,然后使用i
i++(i--):先使用i,然后將i的值加(減)1開始結果3i4j43i4j3(3)用于++,--運算的可以是有序類型的變量(4)
++,--的結合性是自右向左的。第三十三頁,共六十四頁,編輯于2023年,星期四例題1:inti=3,k;k=(i++)+(i++)+(i++);則:k=?i=?相當于①k=i+i+i;k=9
②i++;i++;i++;i=6例題2:inti=3,k;k=(++i)+(++i)+(++i);則:k=?i=?相當于①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.表達式計算完成后,求1.i++的i自加1。i增值為:5
一般寫為:(i++)+(++i)。。第三十四頁,共六十四頁,編輯于2023年,星期四
3.3.4賦值運算符和賦值表達式1、
賦值運算符(=)計算賦值運算符“=”右邊表達式的值,并將計算結果賦給“=”左邊的變量。2、賦值表達式:變量=表達式①計算賦值運算符右邊“表達式”的值,②將計算結果賦值給賦值運算符左邊的“變量”,③賦值表達式的值就是賦值運算符左邊“變量”的值第三十五頁,共六十四頁,編輯于2023年,星期四3、賦值運算符按自右至左結合順序(右結合)例1:inta=2,b=3,c=4;a=b=c=51.a=b=c=5:c=5,表達式c=5值為52.a=b=c=5:b=5,表達式b=c=5值為53.a=b=c=5:a=5,表達式a=b=c=5值為5
例2:a=b=4+(c=5)1.a=b=4+(c=5):c=5,表達式c=5值為5
2.a=b=4+(c=5):表達式4+(c=5)值為93.a=b=4+(c=5):b=9,表達式b=4+(c=5)值為94.a=b=4+(c=5):a=9,表達式a=b=4+(c=5)值為9第三十六頁,共六十四頁,編輯于2023年,星期四4、賦值時的類型轉(zhuǎn)換
當賦值運算符兩側類型不一致,賦值時要進行類型轉(zhuǎn)換。其轉(zhuǎn)換工作由c編譯自動完成。轉(zhuǎn)換原則是以“=”左邊的變量類型為準,即將“=”右邊的值轉(zhuǎn)換為與“=”左邊的變量類型—致(類型轉(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直接舍去浮點數(shù)地小數(shù)部分(存儲空間縮小)②int→float按浮點數(shù)相應有效位數(shù)補小數(shù)點后地有效0(擴大)③double→float截取前7位double數(shù)據(jù)給float變量(縮小)④int→char截取int數(shù)據(jù)地低8位給char變量(縮小)第三十七頁,共六十四頁,編輯于2023年,星期四
3.3.5組合賦值運算符和組合賦值表達式1、組合賦值運算符
在賦值符(=)之前加上其它運算符構成組合運算符:
運算符=10種:+=,-=,*=,/=,%=
<<=,>>=,&=,^=,|=
2、組合賦值表達式
格式:變量名組合賦值運算符表達式
功能:變量名=變量名運算符表達例:a+=3a=a+3x*=y+8x=x*
(y+8)=右邊為一整體,而不等于x=x*y+8第三十八頁,共六十四頁,編輯于2023年,星期四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、
賦值運算符按自右至左結合順序表達式表達式值各變量值求解過程a=5a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a*=3+5a+=a-=a*ainta=3,b,c;第三十九頁,共六十四頁,編輯于2023年,星期四a=b=d=x=y=a=c=*課后作業(yè)例:inta=3,b,d=012;charc;floatx,y;
表達式各變量的值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ù)學表達式,用C語言表達式表達正確的是:(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第四十頁,共六十四頁,編輯于2023年,星期四3.4.1關系運算符與關系表達式
1關系運算符優(yōu)先級相同(高)優(yōu)先級相同(低)同級左結合3.4關系運算符和關系表達式<小于<=小于等于>大于>=大于等于==等于!=不等于關系表達式格式:表達式1關系運算符表達式2例:3>45>=4x>x+1關系表達式的值:“真”——條件滿足,用1表示
“假”——條件不滿足,用0表示第四十一頁,共六十四頁,編輯于2023年,星期四例:若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)先次序:算術運算符關系運算符
賦值運算符例:c>a+bc>(a+b)a>b!=c(a>b)!=ca==b<ca==(b<c)a=b>ca=(b>c)如何表示:0<=x<=20?第四十二頁,共六十四頁,編輯于2023年,星期四3.4.2邏輯運算符和邏輯表達式1邏輯運算符和邏輯表達式&&邏輯與:雙目運算符
例:(a>b)&&(x>y)||
邏輯或:雙目運算符
例:(a>b)||(x>y)!邏輯非:一目運算符例:!
(a>b)邏輯運算“真值表”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可以是一個變量、常量或運算表達式第四十三頁,共六十四頁,編輯于2023年,星期四運算符種類優(yōu)先次序
!非算術運算符關系運算符
&&
||賦值運算符高低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;邏輯表達式值說明:(1)邏輯運算結果:只能為“真”(1)或“假”(0),不可能是其它數(shù)值11第四十四頁,共六十四頁,編輯于2023年,星期四(2)邏輯表達式中的運算對象(操作數(shù))可以是0(“假”)或任何非零的數(shù)值(“真”)111301自左至右掃描例:
5>3&&2||8<4-!0(3)邏輯表達式求解并非一定要所有的邏輯運算符都被執(zhí)行,會出現(xiàn)“短路”現(xiàn)象例:設a=1,b=2,c=3,d=4,m=1,n=1(m=a>b)&&(n=c>d)00001mn第四十五頁,共六十四頁,編輯于2023年,星期四例: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第四十六頁,共六十四頁,編輯于2023年,星期四(4)邏輯表達式的應用例1:判別某一年year是否閏年。①能被4整除,但不能被100整除:
或②能被400整除:閏年條件:例2:寫出判斷變量C的值是否為……的條件表達式
小寫字母
數(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第四十七頁,共六十四頁,編輯于2023年,星期四例3、寫出判斷點在圖形內(nèi)的條件表達式答案: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ù)學表達式轉(zhuǎn)化成C語言表達式
|x|<4
|x|>40=<
x<=20答案:x>=0&&x<=20第四十八頁,共六十四頁,編輯于2023年,星期四3.4.3條件運算符與條件表達式1、形式:條件表達式
?表達式1
:表達式2
條件運算符:三目運算符(三個操作對象)2、執(zhí)行順序:先計算條件表達式的值,若值為非0,則計算表達式1的值,并將表達式1的值作為整個條件表達式的結果;若條件表達式的值為0,則計算表達式2的值,并將表達式2的值作為整個條件表達式的結果3、優(yōu)先級算術運算符關系運算符邏輯運算符條件運算符賦值運算符高低max=(a>b)
?a
:b(a>b)?a+b:a-b第四十九頁,共六十四頁,編輯于2023年,星期四4、結合方向:自右至左a>b?a:c>d?c:d等同于
a>b?a:(c>d?c:d)若a=1,b=2,c=3,d=4,有:4例:求一個數(shù)的絕對值:例:將小寫字母轉(zhuǎn)換成大寫:x=x>=0?x:-x;c=(c>=’a’&&c<=‘z’)?c-32:c;第五十頁,共六十四頁,編輯于2023年,星期四3.5位運算應用:許多計算機硬件設備的狀態(tài)信息通常是用二進制串表示的,則對硬件設備進行操作,也要送出一個二進制位串的方式發(fā)出的命令。3.5.1位運算符一個二進制位只能取值為0或者1;位運算的運算對象只能是整型(int)或字符型(char)的整數(shù);位運算是對運算量的每一個二進制位分別進行操作的;操作符和優(yōu)先級:優(yōu)先級相同同級左結合~按位求反<<按位左移>>按位右移&按位與^按位異或|按位或高低第五十一頁,共六十四頁,編輯于2023年,星期四3.5.2按位邏輯運算1.按位與──&
(1)格式:x&y
(2)規(guī)則:對應位均為1時才為1,否則為0:3&9=1。
例:c=a&b
a:10101001
0101
0111
&b:00000000
1111
1011
c:00000000
0101
0011
(3)用途:將指定位&0,實現(xiàn)清0以屏蔽原先的數(shù)據(jù);(例3-11)
將指定位&1,保留原數(shù)據(jù)對應位
(例3-12)2.按位或──|
(1)格式:x|y
(2)規(guī)則:對應位均為0時才為0,否則為1:3|9=11。例:c=a|ba:10101001
01010111 |b:11111111
11111011c:11111111
11111111(3)用途:將指定位|1,實現(xiàn)置1;
(例3-13)第五十二頁,共六十四頁,編輯于2023年,星期四3.按位異或──^(1)格式:x^y(2)規(guī)則:對應位相同時為0不同時為1:
0^0=0,0^1=1,1^0=1,1^1=1例:c=a^ba:1010100101010111^b:0110000011111011c:1100100110101100
(3)用途:將指定位^1,實現(xiàn)使特定位翻轉(zhuǎn)其余位不變;(例3-14)4.按位取反──~(1)格式:~x(2)規(guī)則:各位翻轉(zhuǎn),即原來為1的位變成0,原來為0的位變成1;例:c=~a~a:00000000000001117
c:1111111111111000
-8的補碼特點:按位求反=整數(shù)求負-1注意:對c=-a有對c=!a有c=-7c=0第五十三頁,共六十四頁,編輯于2023年,星期四3.5.3移位運算1.按位左移──<<(1)格式:x<<位數(shù)(2)規(guī)則:使操作數(shù)的各位左移,低位補0,高位溢出:例:5<<2=20即:00000101
左移2位:
0000010100
結果為202.按位右移──>>(1)格式:x>>位數(shù)(2)規(guī)則:使操作數(shù)的各位右移,移出的低位舍棄;高位:1)對無符號數(shù)和有符號中的正數(shù),補0;2)有符號數(shù)中的負數(shù),補1。例:5>>2=1即:00000101
右移2位:
0000000101
例:-5>>2=-2即:11111011
右移2位:
1111111010結果為1結果為-2第五十四頁,共六十四頁,編輯于2023年,星期四3.5.4位運算賦值運算符除按位取反運算外,其余5個位運算符均可與賦值運算符一起,構成復合賦值運算符:
&=、|+、^=、<<=、>>=如:x&=y相當于:x=x&yx<<=2x=x<<2x>>=3x=x>>3x^=5x=x^5第五十五頁,共六十四頁,編輯于2023年,星期四例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,表達式值60//a=15,表達式值20//賦值表達式,表達式值18,x=18//表達式值100,y=100//1,2,3//3,2,33.6.1逗號運算符和表達式形式:表達式1,表達式2,……表達式n計算:先求解表達式1,再求解表達式2,……結合性:從左向右優(yōu)先級:15逗號表達式的值:等于表達式n的值用途:常用于循環(huán)for語句中3.6其他運算第五十六頁,共六十四頁,編輯于2023年,星期四3.6.5強制類型轉(zhuǎn)換運算符(type)表達式用括號括起來類型轉(zhuǎn)換方式:
自動轉(zhuǎn)換:
2+3.5+‘a(chǎn)’
強制轉(zhuǎn)換:其作用是進行數(shù)據(jù)類型的強制轉(zhuǎn)換。
(type)是單目算符。
強制轉(zhuǎn)換形式:
(類型名)(表達式)
注意:若為表達式,應該用括號括起來例:(double)a
(int)(x+y)
(float)(5%3)第五十七頁,共六十四頁,編輯于2023
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同范本咨詢電話
- 小門店合伙合同范本
- 廠房柱子出售合同范本
- 半掛車購車合同范本
- 合伙健身創(chuàng)業(yè)合同范本
- 辦公供貨合同范本
- 產(chǎn)后修復項目合同范本
- 凈化車間保養(yǎng)合同范本
- 合同范本 logo位置
- 合同范本編制能力
- GB/T 18876.1-2024應用自動圖像分析測定鋼和其他金屬中金相組織、夾雜物含量和級別的標準試驗方法第1部分:鋼和其他金屬中夾雜物或第二相組織含量的圖像分析與體視學測定
- 2024年河南省高考對口升學語文試卷及參考答案
- 司索工安全技術交底
- 解析:2023年廣西壯族自治區(qū)中考數(shù)學真題(原卷版)
- 爬模施工應急處置措施
- 2024年越南高純碳化硅粉末行業(yè)現(xiàn)狀及前景分析2024-2030
- 領養(yǎng)小孩申請書
- GB 1588-2024醫(yī)用玻璃體溫計
- 全國大學生英語競賽輔導課件教學培訓課件
- 2024年保安員考試題庫【典型題】
- Unit 2 Lets celebrate Developing ideas-Writing a letter to express 課件【知識精講+拓展訓練】高中英語外研版(2019)必修第二冊
評論
0/150
提交評論