![C語言運算符大全_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/3ee8f258-132a-407d-99f2-64f25cd977be/3ee8f258-132a-407d-99f2-64f25cd977be1.gif)
![C語言運算符大全_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/3ee8f258-132a-407d-99f2-64f25cd977be/3ee8f258-132a-407d-99f2-64f25cd977be2.gif)
![C語言運算符大全_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/3ee8f258-132a-407d-99f2-64f25cd977be/3ee8f258-132a-407d-99f2-64f25cd977be3.gif)
![C語言運算符大全_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/3ee8f258-132a-407d-99f2-64f25cd977be/3ee8f258-132a-407d-99f2-64f25cd977be4.gif)
![C語言運算符大全_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/3ee8f258-132a-407d-99f2-64f25cd977be/3ee8f258-132a-407d-99f2-64f25cd977be5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、盛年不重來,一日難再晨.及時宜自勉,歲月不待人C語言的內(nèi)部運算符很豐富,運算符是告訴編譯程序執(zhí)行特定算術(shù)或邏輯操作的符號.C語言有三大運算符:算術(shù)、關(guān)系與邏輯、位操作.另外,C還有一些特殊的運算符,用于完成一些特殊的任務(wù).2.6.1 算術(shù)運算符表2-5列出了 C語言中允許的算術(shù)運算符.在 C語言中,運算符“ +、“一、“ *和“/的用法與大 多數(shù)計算機語言的相同, 幾乎可用于所有C語言內(nèi)定義的數(shù)據(jù)類型. 當“/被用于整數(shù)或字符時,結(jié)果取 整.例如,在整數(shù)除法中,10/3=3.一元減法的實際效果等于用-1乘單個操作數(shù),即任何數(shù)值前放置減號將改變其符號.模運算符“ %在 C 語言中也同它在其它語言
2、中的用法相同.切記,模運算取整數(shù)除法的余數(shù),所以“ %不能用于 float和 double 類型.表2-E算末運算將恒瓊將作運鼻精作 ffi-理法.也提一元就殖%桂通算一加法-自廉*靠擊自安上除法下面是說明先用法的程序鉉田1口;¥=箝ptriwrf;/*顯月3princf 一M,城yl ;/*品示孳數(shù)除法的余數(shù) 7it=l;/*號鬲最后一行打印一個0和一個1,由于1/2整除時為0,余數(shù)為1,故1%2取余數(shù) 自增和自減C語言中有兩個很有用的運算符,通常在其它計算機語言中是找不到它們的一自增和自減運算符,+和-運算符"+是操作數(shù)加1,而"-"是
3、操作數(shù)減1,換句話說:x=x+1;同+x;x=x-1;同-x; 自增和自減運算符可用在操作數(shù)之前,也可放在其后,例如: x=x+1;可寫成+x;或x+;但在表達式中 這兩種用法是有區(qū)別的.自增或自減運算符在操作數(shù)之前,C語言在引用操作數(shù)之前就先執(zhí)行加1或減1操作;運算符在操作數(shù)之后,C語言就先引用操作數(shù)的彳I,而后再進行加1或減1操作.請看下例:x=10; ;y=+x;此時,y=11o如果程序改為: x=10;y=x+;那么y=10.在這兩種情況下,x都被置為11,但區(qū)別在于設(shè)置的時刻,這種對自增和自減發(fā)生時刻的限制是 非常有用的.在大多數(shù) C編譯程序中,為自增和自減操作生成的程序代碼比等價的
4、賦值語句生成的代碼 要快得多,所以盡可能采用加1或減1運算符是一種好的選擇.O下面是算術(shù)運算符的優(yōu)先級: 最局+、-一元減*、/、%最低+、-編譯程序?qū)ν夁\算符按從左到右的順序進行計算.當然,括號可改變計算順序.C語言處理括號的方法與幾乎所有的計算機語言相同:強迫某個運算或某組運算的優(yōu)先級升高.2.6.3 關(guān)系和邏輯運算符關(guān)系運算符中的“關(guān)系二字指的是一個值與另一個值之間的關(guān)系,邏輯運算符中的“邏輯二字指的是連接關(guān)系的方式.由于關(guān)系和邏輯運算符常在一起使用,所以將它們放在一起討論.關(guān)系和邏輯運算符概念中的關(guān)鍵是True 真和Flase 假.C語言中,非0為True, 0為Flase .使用關(guān)
5、系或邏輯運算符的*太孑等于=零干e小于1=不等于厘箱迷算存含 X曲曲與I蜜!非表2-6給出于關(guān)系和邏輯運算符,下面用 1和0給出邏輯真值表.關(guān)系和邏輯運算符的優(yōu)先級比算術(shù)運算 符低,即像表達式10>1+12的計算可以假定是對表達式10>1+12的計算,當然,該表達式的結(jié)果為 Flase.在一個表達式中允許運算的組合.例如:10>5&&!10<9|3<=4這一表達式的結(jié)果為 True oO下表給出了關(guān)系和邏輯運算符的相對優(yōu)先級: :最高!!>=<=&&最低|同算術(shù)表達式一樣,在關(guān)系或邏輯表達式中也使用括號來修改原計算順序.
6、切記,所有關(guān)系和邏輯 表達式產(chǎn)生的結(jié)果不是 0就是1,所以下面的程序段不僅正確而且 將在屏幕上打印數(shù)值1.int x;x=100;printf"%d",x>10;2.6.4 位操作符與其它語言不同,C語言支持全部的位操作符BitwiseOperators .由于C語言的設(shè)計目的是取代匯編 語言,所以它必須支持匯編語言所具有的運算水平.位操作是對字節(jié)或字中的位 bit 進行測試、置位或 移位處理,這里字節(jié)或字是針對 C標準中的char和int數(shù)據(jù)類型而言的.位操作不能用于float、double > longdouble、void或其它復(fù)雜類型.表 2-7給出了位
7、操作的操作符.位操作中的AND OR和NOT1的補碼的真值表與邏輯運算等價,唯一不同的是位操作是逐位進行運算的.表2-7位操作符含 X含 X&q心口1我(OR)右將A-異嚏(XOR)左移下面是異或的且他4并成的真值衰PqPQ00La11i00i1如表2-8所示,當且僅當一個操作數(shù)為True時,異或的輸出為 True ,否那么為Flase.位操作通常用于設(shè)備驅(qū)動程序,例如調(diào)制解調(diào)器程序、磁盤文件治理程序和打印機驅(qū)動程序.這是由于位 操作可屏蔽掉某些位,如奇偶校驗位(奇偶校驗位用于保證字節(jié)中的其它位不會發(fā)生錯誤通常奇偶校驗位 是字節(jié)的最高位).通常我們可把位操作 AND作為關(guān)閉位的手段,這
8、就是說兩個操作數(shù)中任一為0的位,其結(jié)果中對應(yīng)位置為0.例如,下面的函數(shù)通過調(diào)用函數(shù)read_modem(),從調(diào)制解調(diào)器端口讀入一個字符,并將奇偶校驗位置成0.例:叫一char get_cliar_fm ()( 一一一ctar ch;,從調(diào)利解調(diào)券諾口中得到一個字將“xatum (ch£J.27); 字節(jié)的位8是奇偶位,將該字節(jié)與一個位1到位7為1、位8為0的字節(jié)進行與操作,可將該字節(jié)的奇偶校驗位置成0.表達式ch&127正是將ch中每一位同127數(shù)字的對應(yīng)位進行與操作,結(jié)果 ch的位8被置成 了 0.在下面的例子中,假定 ch接收到字符"A"并且奇偶位已
9、經(jīng)被置位.卻寓位I110虱0001內(nèi)容為的3,其中奇1禺校聆位為1011HU11 二進制的口7皮行與操作一&一與操作= 010000001去淖奇偶校驗的 Z位諜作OR與AND操作相反.可用來直位任一操作數(shù)中為】的位將結(jié)果的對應(yīng)位置1如 下所示 12町3的情況是t1000000 的二道劇0000011手的二迸制或操作=1000011 結(jié)果異或操作通常縮寫為XOR.當且僅當做比擬的兩位不同時.才將結(jié)果的對應(yīng)位置位 如 下所示.異或操作】2產(chǎn)1工.的情況是:01111111 L27 的二進制OHHCOO 12.的二進制A異或痛作=00000111 結(jié)果一般來說,位的AND ORW XOFB作
10、通過對操作數(shù)運算,直接對結(jié)果變量的每一位分別處理.正是由于這 一原因還有其它一些原因,位操作通常不像關(guān)系和邏輯運算符那樣用在條件語句中,我們可以用例子 說明這一點:假定 X=7,那么x&&8為Ture1,而x&8卻為Flase0.記住,關(guān)系和邏輯操作符結(jié)果不是0就是1.而相似的位操作通過相應(yīng)處理,結(jié)果可為任意值.換言之,位操作可以有0或1以外的其它值,而邏輯運算符的計算結(jié)果總是0或1.移位操作符 >>和<<將變量的各位按要求向或向左移動.右移語句通常形式是:variable右移位數(shù)左移語句是:variable<<左移位數(shù)當某位從一端移
11、出時,另一端移入0 某些計算機是送1,詳細內(nèi)容請查閱相應(yīng) C編譯程序用戶手冊.切記:移位不同于循環(huán),從一端移出的位并不送回到另一端去,移去的位永遠喪失了,同時在另一端補0.移位操作可對外部設(shè)備如 D/A轉(zhuǎn)換器的輸入和狀態(tài)信息進行譯碼,移位操作還可用于整數(shù)的快速乘除 運算.如表2-9所示假定移位時補 0,左移一位等效于乘 2,而右移一位等效于除以 2.費2-口用移位操作進行柔和除*粗X帶中朝向央行后的比x的信x= 1aooooin"7*31ooeoiuo14Tt- -301110000112平:出11000000192瞥“1onoofloa宛OOCLIOOO21每左移一位乘2,注意x&
12、lt;<2后,原x的信息已經(jīng)喪失了,由于一位已經(jīng)從一端出,每右移一位相當于被 2 除,注意,乘后再除時,除操作并不帶回乘法時已經(jīng)丟掉的高位.反碼操作符為 .的作用是將特定變量 的各位狀態(tài)取反,即將所有的 1位置成0,所有的0位置成1.位操作符經(jīng)常用在加密程序中,例如,假設(shè)想 生成一個不可讀磁盤文件時,可以在文件上做一些位操作.最簡單的方法是用下述方法,通過1的反碼運 算,將每個字節(jié)的每一位取反.原字節(jié)00101100第一次取反碼11010011第二次取反碼00101100注意,對同一行進行連續(xù)的兩次求反,總是得到原來的數(shù)字,所以第一次求反表示了字節(jié)的編碼,第二次求反進行譯碼又得到了原來的
13、值.可以用下面的函數(shù) encode()對字符進行編碼.例2刃char enccde(ch: char ch? (2.6.5 ?操作符C語言提供了一個可以代替某些if-then-else語句的簡便易用的操作符?.該操作符是三元的,其一般形式為:EXP1?EXE2:EXP3 3EXP1, EXP2和EXP3是表達式,注意冒號的用法和位置.操作符“?作用是這樣的,在計算 EXP1之后,如果數(shù)值為True,那么計算EXP2并將結(jié)果作為整個表達式 的數(shù)值;如果EXP1的值為Flase ,那么計算EXP3,并以它的結(jié)果作為整個表達式的值,請看下例: x=10;y=x>9?100:200;例中,賦給y
14、的數(shù)值是100,如果x被賦給比9小的值,y的值將為200,假設(shè)用if-else 語句改寫,有下面 的等價程序:x=10;if(x>9)y=100;elsey=200; ;有關(guān)C語言中的其它條彳語句將在第3章進行討論.2.6.6 逗號操作符作為一個操作符,逗號把幾個表達式串在一起.逗號操作符的左側(cè)總是作為void(無值),這意味著其右邊表達式的值變?yōu)橐远禾柗珠_的整個表達式的值.例如: x=(y=3,y+1);這行將3賦給y,然后將4賦給x,由于逗號操作符的優(yōu)先級比賦值操作符優(yōu)先級低,所以必須使用括號.實際上,逗號表示操作順序.當它在賦值語句右邊使用時,所賦的值是逗號分隔開的表中最后那個表達
15、式 的值.例如,y=10;x=(y=y-5,25/y);執(zhí)行后,x的值是5,由于y的起始值是10,減去5之后結(jié)果再除以25,得到最終結(jié)果.o在某種意義上可以認為,逗號操作符和標準英語的and是同義詞.2.6.7 關(guān)于優(yōu)先級的小結(jié)表2-10列出了 C語言所有操作符的優(yōu)先級,其中包括將在本書后面討論的某些操作符. 注意,所有操作符 (除一元操作符和?之外)都是左結(jié)合的.一元操作符(*, &和-)及操作符“? 那么為右結(jié)合.表2-1 0 C語喜操作符的優(yōu)先級O 口 一:、J _ _ . (typ“J 工-ofJ%CC »Y工二一!女ft1&&II7_= 量:=C語言
16、運算符大全C語言共有34個運算符,今天閑來沒事就找了一下,現(xiàn)在拿出來分享一下呵:按優(yōu)先級排序,空行表示優(yōu)先級下降,01為最高,最先算1431均為雙目,左結(jié)合 01 .圓括號02 ,下標-> 03 .指針型結(jié)構(gòu)成員.04 .結(jié)構(gòu)成員! 05 .邏輯非 06 .位非+ 07 ,自增- -08 .自減- 09 .取負類型10 .類型轉(zhuǎn)換- 11 .取內(nèi)容& 12 .取地址sizeof 13 .求字節(jié)此級513均為單目運算,且都為右結(jié)合* 14 .乘/ 15 .除% 16.求余+ 17 .加-18 .減> < 19 .左移> > 20 .右移> 21 .小于
17、> =22 .小于等于> 23 .大于> =24 .大于等于> =25 .等于> = 26 .不等于> 27 .位與A 28 .位異或| 29 .位或> & 30.與| 31 .或?: 32 .條件運算此級32為三目運算,右結(jié)合=33 .賦值運算另有 10 個擴展符 + = ,-=,*=,/=,%=,>>=,<< = ,&=,A = ,| =,34 .逗號運算運算符解釋結(jié)合方式()口 -> .括號函數(shù)等,數(shù)組,兩種結(jié)構(gòu)成員訪問由左1可右!+ - + -* & (類型)sizeof否認,按位否認,增量
18、,減量,正負號,間接,取地址,類型轉(zhuǎn)換,求大小由右1可左*/ %乘,除,取模由左1可右+ -力口,減由左1可右<< >>左移,右移由左1可右< <=>=>小于,小于等于,大于等于,大于由左1可右=!=等于,不等于由左1可右&按位與由41可右卜按位異或由41可右|按位或由41可右&&邏輯與由左1可右|邏輯或由41可右?:條件由右1可左-+*= /=&= A= |= <<= >>=各種賦值由右1可左,逗號順序由41可右上面給出的是其 運算符,下面給出32個關(guān)鍵字及其含義:auto :聲明自動變量
19、一般不使用double :聲明雙精度變量或函數(shù)int :聲明整型變量或函數(shù)struct :聲明結(jié)構(gòu)體變量或函數(shù)break :跳出當前循環(huán)else :條件語句否認分支與 if 連用long :聲明長整型變量或函數(shù)switch :用于開關(guān)語句case :開關(guān)語句分支enum :聲明枚舉類型register :聲明積存器變量typedef :用以給數(shù)據(jù)類型取別名當然還有其他作用char :聲明字符型變量或函數(shù)extern :聲明變量是在其他文件正聲明也可以看做是引用變量return :子程序返回語句可以帶參數(shù),也看不帶參數(shù)union :聲明聯(lián)合數(shù)據(jù)類型const :聲明只讀變量float :聲明浮點
20、型變量或函數(shù)short :聲明短整型變量或函數(shù)unsigned :聲明無符號類型變量或函數(shù)continue :結(jié)束當前循環(huán),開始下一輪循環(huán)for : 一種循環(huán)語句可意會不可言傳signed :生命有符號類型變量或函數(shù)void :聲明函數(shù)無返回值或無參數(shù),聲明無類型指針根本上就這三個作用 default :開關(guān)語句中的"其他"分支goto :無條件跳轉(zhuǎn)語句sizeof :計算數(shù)據(jù)類型長度volatile :說明變量在程序執(zhí)行中可被隱含地改變do :循環(huán)語句的循環(huán)體while :循環(huán)語句的循環(huán)條件static :聲明靜態(tài)變量if :條件語句C語言運算符分類1級優(yōu)先級左結(jié)合圓括號
21、;口下標運算符;- 指向結(jié)構(gòu)體成員運算符;.結(jié)構(gòu)體成員運算符.2級優(yōu)先級右結(jié)合!邏輯非運算符;按位取反運算符;+前綴增量運算符;-前綴減量運算符;+正號運算符;-負號運算符;類型類型轉(zhuǎn)換運算符;*指針運算符;&地址運算符;sizeof 長度運算符.3級優(yōu)先級左結(jié)合*乘法運算符;4級優(yōu)先級+加法運算符;5級優(yōu)先級/除法運算符;麻余運算符.左結(jié)合-減法運算符.左結(jié)合左移運算符; 右移運算符.6級優(yōu)先級、=、7級優(yōu)先級=等于運算符;!=不等于運算符.8級優(yōu)先級左結(jié)合&按位與運算符.9級優(yōu)先級左結(jié)合A按位異或運算符.10級優(yōu)先級左結(jié)合|按位或運算符.11級優(yōu)先級左結(jié)合&理輯與運
22、算符.12級優(yōu)先級左結(jié)合|邏輯或運算符.13級優(yōu)先級右結(jié)合?:條件運算符.14級優(yōu)先級右結(jié)合=、+=、-=、*=、/=、=、&=、人=、|=、=、=賦值運算符.15級優(yōu)先級左結(jié)合,逗號運算符.運算符優(yōu)先級優(yōu)先級從上到下依次遞減,最上面具有最高的優(yōu)先級,逗號操作符具有最低的優(yōu) 先級.所有的優(yōu)先級中,只有三個優(yōu)先級是從右至左結(jié)合的,它們是單目運算符、條件 運算符、賦值運算符.其它的都是從左至右結(jié)合.()是具有最高優(yōu)先級的其實并不算是真正的運算符,它們算是一類特殊的操作.與函數(shù)相關(guān),口與數(shù)組相關(guān),而及.是取結(jié)構(gòu)成員.其次是單目運算符,所有的單目運算符具有相同的優(yōu)先級,因此在我認為的真正的運算
23、符中它們具有最高的優(yōu)先級,又由于它們都是從右至左結(jié)合的,因此*p+與*p+等效是毫無疑問的.另外在C語言里沒有前置后置之分由于+ -是右結(jié)合所以右側(cè)優(yōu)先運算表現(xiàn)為"操作數(shù)后置優(yōu)先級比擬高"的假象 前置和后置的區(qū)分是由于運算符重載而后參加C+的接下來是算術(shù)運算符,*、/、勺優(yōu)先級當然比 +、高了.移位運算符緊隨其后.其次的關(guān)系運算符中,< <= > >=要比=!=高一個級別,不大好理解.所有的邏輯操作符都具有不同的優(yōu)先級單目運算符出外,!和邏輯位操作符的 "與"比"或"高,而"異或"那么在它們
24、之間.跟在其后的 &&比| tWj O接下來的是條件運算符,賦值運算符及逗號運算符.在C語言中,只有 4個運算符規(guī)定了運算方向,它們是&&、| | 、條件運算符及賦值運算符.&&、| |都是先計算左邊表達式的值,當左邊表達式的值能確定整個表達式的值時,就不再計算右邊表達式的值.如 a = 0 && b; &&運算符的左邊位0,那么右邊表達式b就不再判斷.在條件運算符中.如a?b:c ;先判斷 a的值,再根據(jù) a的值對b或c之中的一個進行求值.賦值表達式那么規(guī)定先對右邊的表達式求值,因此使a = b = c = 6;
25、成為可能.運算符優(yōu)先級等級口訣及注釋 運算符優(yōu)先級等級口訣圓方括號、箭頭一句號,自增自減非反負、針強地址長度,乘除,加減,再移位,小等大等、等等不等,八位與,七位異,六位或,五與,四或,三疑,二賦,一真逗.其中號為一個等級分段.運算符優(yōu)先級等級注釋“圓方括號、 箭頭一句號指的是第15級的運算符.其中圓方括號很明顯“、口,箭頭 指的是指向結(jié)構(gòu)體成員運算符“->,句號 指的是結(jié)構(gòu)體成員運算符;“自增自減非反負、針強地址長度指的是第14級的運算符.其中 非 指的是邏輯運算符“ ! ,反指的是按位取反運算符“,負指的是負號運算符,針指的是指針運算符“ *, 強指的是強制類型轉(zhuǎn)換運算符,地址指的是地址運算符“&,長度 指的是長度運算符“ sizeof ;“乘除,加減,再移位移位指的是左移運算符“ <<和右移運算符“ >>,其 中除法還包括了取余運算符“ % ;“小等大等、等等不等指的是第10級到第9級的運算符:<、<=、>和>=,等等指的是等于運算符=,不等指的是不等于運算符!=“八位與,七位異,六位或其中 八位與 指的是第8級的 按位與 運算符 “&,七位異指的是第7級的按位異或運算符“人,六位或指的是第6級的按位或運算符“ | ;“五與,四或"指的是第 5級、第4級的邏輯與運算符“ &&a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年壓紋機合作協(xié)議書
- 2025年二手車交易買賣合同參考范文(2篇)
- 2025年代理進口合作協(xié)議(4篇)
- 2025年人才服務(wù)代合同范文(2篇)
- 2025年二手房轉(zhuǎn)讓買賣合同簡單版(2篇)
- 2025年臨時工勞動合同證明模板(三篇)
- 2025年臨時工聘用勞務(wù)合同模板(三篇)
- 2025年云南鮮花配送合作協(xié)議樣本(三篇)
- 2025年中介公司房屋出租合同(五篇)
- 地鐵沿線房產(chǎn)居間合同樣本
- 城市基礎(chǔ)設(shè)施修繕工程的重點與應(yīng)對措施
- 油氣勘探風險控制-洞察分析
- GB 12710-2024焦化安全規(guī)范
- 2022年中考化學模擬卷1(南京專用)
- 醫(yī)療機構(gòu)質(zhì)量管理指南
- 【??途W(wǎng)】2024秋季校園招聘白皮書
- 2024-2025銀行對公業(yè)務(wù)場景金融創(chuàng)新報告
- 2025屆鄭州市高三一診考試英語試卷含解析
- 《我國個人所得稅制下稅收征管問題研究》
- 建筑工程三通一平技術(shù)方案
- 腫瘤中醫(yī)治療及調(diào)養(yǎng)
評論
0/150
提交評論