C語言運算子和優先順序

來源:互聯網
上載者:User

標籤:

        關於C語言運算子和優先順序,經整理眾多部落格資料匯入自己的實戰,如下:
        a.算術運算
        C語言一共有34種運算子,包括常見的加減乘除運算。
        1) 加法:+ 還可以表示正號
        2) 減法:- 還可以表示負號
        3) 乘法:* 非數學意義上的X
        4) 除法:/  注意1/2的值為0而非0.5
        5) 取餘(模運算):兩個整數相除之後的餘數(注意兩邊都必須是整數,帶符號只和左值有關)
          注意點:
        1) Int a=10.8;//資料精度丟失警告。結果為10——自動類型轉換
        2) Int a=(int)10.8;//無警告。把10.8強制轉換為整型——強制類型轉換
        3) Double c=10.6+6//結果為16.600000。在電腦中,拿兩個數值進行運算,則運算子兩邊的數值需要類型相同,如果不同則進行自動型別提升。即把6轉為6.000000後再參與運算。
        4) 參與運算的兩個數是什麼類型,那麼其結果就是什麼類型。
        int a=10/3結果為3,
        double b=10/3結果為3.000000;
        double c=10.0/3結果為3.333333。
        要求精確值可以進行強制類型轉換。
        double d=(double)3/2;//把3轉換為double類型變為3.000000,之後2進行自動型別提升轉變為2.000000參與運算,結果為1.500000。
                             //也可以寫成3/(double)2。區別double e=(double)(3/2)先計算3/2的值為1再對1進行強制類型轉換,結果為1.000000。
        b.賦值運算
        1)簡單賦值
        Int a=10+5;a=b=10;//從右向左,左邊不能為常量
        2)複合賦值
        a=a+5;=>a+=5;
        a=a*5;=>a*=5;
        a+=5*6+4;=>a=a+(5*6+4)
        提示:預算順序取決於兩點:一是運算子的優先順序,二是結合的順序。
 
        c.自增自減運算
        Int a=10;
        把a的值加1有四種方法:
        1) a=a+1;
        2) a+=1;
        3) a++;
        4) ++a;
        簡單區分a++和++a。
        Int b;
        Int a=10;
        b=++a; //a==11,b==11;a先把值加1為11,再賦值給b
        b=a++; //a==11,b==10;a先把值10複製給b,a自己再加1為11
        b=(a++)+(++a);  //a1==10,a2==12,b==22
        b=(++a)+(a++);  //a1==11,a2==11,b==22
        注意:int d=10++;//這種寫法是錯誤的,因為對常量進行自加和自減沒有任何意義。

        d.Sizeof
        作用:用來計算變數,常量或者是一種資料類型所佔的記憶體位元組數。
        基本形式:sizeof(變數名|常量|資料類型),完成之後返回一個值。
        1) sizeof 變數|常量
        2) sizeof (變數|常量)
        3) sizeof (資料類型)
        注意:資料類型一定要用括弧括起來,不能寫成sizeof 資料類型這樣的形式。

        e.關係運算子
        1)條件判斷
        預設情況下。在程式中寫出的每一句正確的代碼都會被執行,但很多時候我們需要在某個條件成立的情形下才執行某一段代碼,
        如登入操作,這種情況可以使用條件陳述式來完成。
        2)真假
        在C語言中,條件成立稱為“真”,條件不成立稱為“假”。
        C語言規定,任何數值都有真假性,任何非零值都為真,只有0才為假,無布爾類型。
        3)關係比較
        關係運算的結果只有兩種情況,如果條件成立就為真,值為1,如果條件不成立就為假,值為0。
        有6種運算子,分別是:(1)<  (2)<=  (3) >  (4) >=  (5)==  (6)!=
        4)使用注意
        a) ==和!=優先順序相等,其他四個關係運算子的優先順序相等,且前者的優先順序低於後者。如2==3>1 應該先計算3>1
        b) 關係運算子中,若優先順序相同,則“從左往右”結合。如4>3<2,先計算4>3
        c) 關係運算子中的優先順序小於算術運算子。如3+4>8-2 相當於(3+4)> (8-2)
        d) 練習5!=4+2*7>3==10 先計算5!=18>3==10,5!=1==10,1==10,假

        f.邏輯運算子
        邏輯運算的結果只有兩個:真(0)和假(1)
        1) 與   &&   條件1&&條件2 只有的那個條件1和條件2都成立時,才為真否則為假。
        2) 或   ||    條件1 ||條件2  當條件1或條件2中有一個成立時就為真,都不成立時為假。
        3) 非   !  !條件   取反
        注意:邏輯運算子在進行運算時,只要能夠確定整體的真假性,後面的條件就不再進行而是直接忽略。
        Int a=b=10;
        Int c=(a>5)&&(++b>=11);//此時a==10,b==11,c==1
        Int c=(a<5)&&(++b>=11);//此時a==10,b==10,c==0
        提示:在進行邏輯運算時,如果搞不清楚各個符號的優先順序,可以使用()。

        g.三目運算子
        雙目:需要兩個值參與運算
        單目:1個數值參與運算  如!5
        三目:需要3個數值參與
        格式:條件?數值1:數值2
        先判斷?前的條件,若條件成立則返回數值1,若條件不成立則返回條件2。
        要求比較a和b的值,把數值大的存入到c中  c=a>b?a:b
        比較a,b,c三個數的值,把最大的值存入到d中
        Int  abmax=(a>b)?a:b;
        d=abmax > c ? abmax : c;

        十五個優先順序:
        1)   ()  []  .  ->
        2)   !  ~   -(負號) ++  --   &(取變數地址)*   (type)(強制類型)    sizeof
        3)   * / %
        4)   + -
        5)   >> <<  
        6)   > >= < <=
        7)   == !=   
        8)   &  
        9)   ^   
        10)  |   
        11)  &&
        12)  ||
        13)  ?:
        14)   =  +=  -=  *=  /=   %=  |=   ^=   &=   >>=   <<=
        15)  ,
        ps:結合性:2   13  14  是從右至左,其他都是從左至右。

C語言運算子和優先順序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.