久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      C語言運算符

      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語言中也同它在其它語言中的用法相同。切記,模運算取整數(shù)除法的余數(shù),所以“%”不能用于float和double類型。

      C語言運算符
      最后一行打印一個0和一個1,因為1/2整除時為0,余數(shù)為1,故1%2取余數(shù)1。
      2.6.2自增和自減
      C語言中有兩個很有用的運算符,通常在其它計算機語言中是找不到它們的—自增和自減運算符,++和–。運算符“++”是操作數(shù)加1,而“–”是操作數(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ù)的值,而后再進行加1或減1操作。請看下例:
      x=10;
      ;y=++x;
      此時,y=11。如果程序改為:
      x=10;y=x++;
      則y=10。在這兩種情況下,x都被置為11,但區(qū)別在于設(shè)置的時刻,這種對自增和自減發(fā)生時刻的控制是非常有用的。在大多數(shù)C編譯程序中,為自增和自減操作生成的程序代碼比等價的賦值語句生成的代碼
      要快得多,所以盡可能采用加1或減1運算符是一種好的選擇。
      。下面是算術(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)系或邏輯運算符的表達式對Flase和Ture分別返回值0或1(見表2-6)。
      C語言運算符
      表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。
      。下表給出了關(guān)系和邏輯運算符的相對優(yōu)先級:
      :最高!
      !
      >= <=
      === !=
      =&&
      最低||同算術(shù)表達式一樣,在關(guān)系或邏輯表達式中也使用括號來修改原計算順序。切記,所有關(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給出了位操作的操作符。位操作中的AND、OR和NOT(1的補碼)的真值表與邏輯運算等價,唯一不同的是位操作是逐位進行運算的。
      C語言運算符
      如表2-8所示,當且僅當一個操作數(shù)為True時,異或的輸出為True,否則為Flase。
      位操作通常用于設(shè)備驅(qū)動程序,例如調(diào)制解調(diào)器程序、磁盤文件管理程序和打印機驅(qū)動程序。這是因為位操作可屏蔽掉某些位,如奇偶校驗位(奇偶校驗位用于確保字節(jié)中的其它位不會發(fā)生錯誤通常奇偶校驗位是字節(jié)的最高位)。

      通常我們可把位操作AND作為關(guān)閉位的手段,這就是說兩個操作數(shù)中任一為0的位,其結(jié)果中對應(yīng)位置為0。例如,下面的函數(shù)通過調(diào)用函數(shù)read_modem(),從調(diào)制解調(diào)器端口讀入一個字符,并將奇偶校驗位置成0。
      C語言運算符
      字節(jié)的位8是奇偶位,將該字節(jié)與一個位1到位7為1、位8為0的字節(jié)進行與操作,可將該字節(jié)的奇偶校驗位置成0。表達式ch&127正是將ch中每一位同127數(shù)字的對應(yīng)位進行與操作,結(jié)果ch的位8被置成了0。在下面的例子中,假定ch接收到字符”A”并且奇偶位已經(jīng)被置位。
      C語言運算符
      一般來說,位的AND、OR和XOR操作通過對操作數(shù)運算,直接對結(jié)果變量的每一位分別處理。正是因為這一原因(還有其它一些原因),位操作通常不像關(guān)系和邏輯運算符那樣用在條件語句中,我們可以用例子說明這一點:假定X=7,那么x&&8為Ture(1),而x&8卻為Flase(0)。
      記住,關(guān)系和邏輯操作符結(jié)果不是0就是1。而相似的位操作通過相應(yīng)處理,結(jié)果可為任意值。換言之,位操作可以有0或1以外的其它值,而邏輯運算符的計算結(jié)果總是0或1。
      移位操作符>>和<<將變量的各位按要求向或向左移動。右移語句通常形式是:
      variable>>右移位數(shù)
      左移語句是:
      variable<<左移位數(shù)
      當某位從一端移出時,另一端移入0(某些計算機是送1,詳細內(nèi)容請查閱相應(yīng)C編譯程序用戶手冊)。切記:移位不同于循環(huán),從一端移出的位并不送回到另一端去,移去的位永遠丟失了,同時在另一端補0。
      移位操作可對外部設(shè)備(如D/A轉(zhuǎn)換器)的輸入和狀態(tài)信息進行譯碼,移位操作還可用于整數(shù)的快速乘除運算。如表2-9所示(假定移位時補0),左移一位等效于乘2,而右移一位等效于除以2。
      C語言運算符
      每左移一位乘2,注意x<<2后,原x的信息已經(jīng)丟失了,因為一位已經(jīng)從一端出,每右移一位相當于被2除,注意,乘后再除時,除操作并不帶回乘法時已經(jīng)丟掉的高位。反碼操作符為~。~的作用是將特定變量的各位狀態(tài)取反,即將所有的1位置成0,所有的0位置成1。位操作符經(jīng)常用在加密程序中,例如,若想生成一個不可讀磁盤文件時,可以在文件上做一些位操作。最簡單的方法是用下述方法,通過1的反碼運算,將每個字節(jié)的每一位取反。
      原字節(jié) 00101100
      第一次取反碼 11010011
      第二次取反碼 00101100
      注意,對同一行進行連續(xù)的兩次求反,總是得到原來的數(shù)字,所以第一次求反表示了字
      節(jié)的編碼,第二次求反進行譯碼又得到了原來的值。可以用下面的函數(shù)encode()對字符進行編碼。
      C語言運算符
      2.6.5 ?操作符
      C語言提供了一個可以代替某些if-then-else語句的簡便易用的操作符?。該操作符是三元的,其一般形式為:
      EXP1?EXE2:EXP3
      3
      EXP1,EXP2和EXP3是表達式,注意冒號的用法和位置。
      操作符“?”作用是這樣的,在計算EXP1之后,如果數(shù)值為True,則計算EXP2,并將結(jié)果作為整個表達式的數(shù)值;如果EXP1的值為Flase,則計算EXP3,并以它的結(jié)果作為整個表達式的值,請看下例:
      x=10;
      ;y=x>9?100:200;
      例中,賦給y的數(shù)值是100,如果x被賦給比9小的值,y的值將為200,若用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)先級低,所以必須使用括號。實際上,逗號表示操作順序。當它在賦值語句右邊使用時,所賦的值是逗號分隔開的表中最后那個表達式的值。例如,
      y=10;x=(y=y-5,25/y);
      執(zhí)行后,x的值是5,因為y的起始值是10,減去5之后結(jié)果再除以25,得到最終結(jié)果。
      。在某種意義上可以認為,逗號操作符和標準英語的and是同義詞。
      2.6.7關(guān)于優(yōu)先級的小結(jié)
      表2-10列出了C語言所有操作符的優(yōu)先級,其中包括將在本書后面討論的某些操作符。注意,所有操作符(除一元操作符和?之外)都是左結(jié)合的。一元操作符(*,&和-)及操作符“?”則為右結(jié)合。
      C語言運算符

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號