回覆列表
  • 1 # 敘永萬學寬

    運 算 符

    (1) 算術運算子(+, -, *, /, %, ++, --) 。

    (2) 關係運算符(<, >, <=, >=, ==, ![KG-*8]=) 。

    (3) 邏輯運算子(!, &&, ||) 。

    (4) 位運算子(<<, >>, ~, |, ^, &) 。

    (5) 賦值運算子(= , 及其雙目運算子的擴充套件賦值運算子) 。

    (6) 條件運算子(? :) 。

    (7) 逗號運算子(,) 。

    (8) 指標運算子(*, &) 。

    (9) 求位元組數運算子(sizeof) 。

    (10) 強制型別轉換運算子(( 型別)) 。

    (11) 分量運算子(·, ->) 。

    (12) 下標運算子( [ ]) 。

    (13) 圓括號運算子(( )) 。

    算術運算子和賦值運算子

    說明:

    (1) +, -, *, / 與數學中運算類似, 先乘除後加減, 也就是按優先順序順序進行運算,優先順序小的先運算。要改變運算順序只要加括號就可以了,括號全部為圓括號,必須注意括號的配對,它們適用於C 的幾乎全部資料型別( 指標類除外) 的各種運算(++, -- 除外) 。除法運算子(/) 在用於兩個整型資料運算時,其運算結果也是整數,餘數總是被截掉。如1/2 的結果是0 ;10/3 的結果是3 。

    (2) 求餘運算子(%) 僅用於整型資料,不能用於實型和雙精度實型。它的作用是取整數除法的餘數。如1%2 的結果是1 ; 10%3 的結果也是1 。

    (3) 賦值運算子(=) 是將右邊表示式的值賦給左邊的變數。 賦值運算子左邊必須是變數等有存貯單元的元素,而不能是常量或表示式。如x=x+1 是合法的,即把x 的值加上1 後再賦給x ,而x+1=x 卻是非法的,因為x+1 不是一個存貯單元, 不能被賦以值。賦值號有別於數學中的等號,這一點是要注意的。

    (4) ++, -- 僅用於整型變數,指標變數。用於整型變數在原值上加1 或減1 ;用於指標變數是取下一地址或上一地址。 關於指標部分的使用在第八章中介紹。 增1 和減1 運算子用在表示式中時,寫法是有差別的:如果運算子在運算元前面, 則在表示式“ 引用” 該運算元前,先對其作加1 或減1 運算; 如果運算子在運算元之後,則先“ 引用” 該運算元,然後再對它作加1 或減1 運算。考慮以下程式:

    main( )

    { int x, y;

    x=10;

    y=++x;

    printf(″%d, %d\n″, x, y);

    }

    運算結果為

    11 , 11

    此時y 的值和x 的值都為11 。 然而換一種寫法:

    main( )

    { int x, y;

    x=10;

    y=x++ ;

    printf(″%d, %d\n″, x, y);

    }

    執行結果為

    11 , 10

    此時y 的值是10 ,而x 的值自增後為11 。上述兩種情況x 都變成了11 ,而y 的值卻不同。它們的差別只在於給x 加1 的時機不同。 此時賦值即為引用。 再如進行輸出操作時,有以下程式段:

    x=10;

    printf(″x=%d\n″, ++x);

    執行結果為x=11 ,執行其下一條語句時x 也是11 , 而程式段:

    x=10;

    printf(″x=%d\n″, x++) ;

    (5) +, -, *, /, % 可以與賦值號= 組成複合賦值運算子+=, -=, *=, /=, %= 。

    如a=a+b 可以寫成a+=b ,a=a*b 可以寫成a*=b 。其餘類推。 這樣書寫簡練,執行速度快,也提高了編譯效率。

  • 中秋節和大豐收的關聯?
  • 結婚後老婆不做飯,也不收拾屋子,但是卻特別愛自己,該怎麼辦?