c語言有六種運算子,如下:
1)算術運算子;
2)賦值運算子;
3)sizeof運算子;
4)關係運算子;
5)邏輯運算子;
6)位運算子。
本章將只介紹算術運算子、賦值運算子和sizeof運算子,關係運算子和邏輯運算子放在其它章節中介紹,位運算子極少使用,了解即可,不深入學習。
下表顯示了 c 語言支援的所有算術運算子。假設變數 a 的值為 18,變數 b 的值為5,則:
運算子描述例項
+兩個數相加
a+b 將得到 23
-乙個數減另乙個數
a-b 將得到 13
*兩個數相乘
a*b 將得到 90
/分子除以分母
a/b 將得到 3.6
%餘數運算子,整除後的餘數
b%a 將得到 3
++自增運算子,整數值增加 1
a++ 將得到 19
–自減運算子,整數值減少 1
a-- 將得到 17
示例(book15.c)
/*
* 程式名:book15.c,此程式演示算術運算子的使用。
*/#include
intmain()
執行效果
變數的自增或自減有兩種寫法:
變數名++; // 表示在本次使用變數後再自增;
++變數名; // 表示在本次使用變數前自增;
變數名–; // 表示在本次使用變數後再自增;
–變數名; // 表示在本次使用變數前自減;
示例(book16.c)
/*
* 程式名:book16.c,此程式演示算術運算子++和--的使用。
*/#include
intmain()
執行效果下表列出了 c 語言支援的賦值運算子:
運算子描述例項
=簡單的賦值運算子,把右邊運算元的值賦給左邊運算元
c = a + b 將把 a + b 的值賦給 c
+=加且賦值運算子,把右邊運算元加上左邊運算元的結果賦值給左邊運算元
c += a 相當於 c = c + a
-=減且賦值運算子,把左邊運算元減去右邊運算元的結果賦值給左邊運算元
c -= a 相當於 c = c - a
*=乘且賦值運算子,把右邊運算元乘以左邊運算元的結果賦值給左邊運算元
c *= a 相當於 c = c * a
/=除且賦值運算子,把左邊運算元除以右邊運算元的結果賦值給左邊運算元
c /= a 相當於 c = c / a
%=求餘數且賦值運算子,求兩個運算元的模賦值給左邊運算元,浮點數不適用取餘數。
c %= a 相當於 c = c % a
賦值運算子支援的是c語言的基本資料型別,包括char、int和double,字串(字元陣列)不能使用賦值運算子。
示例(book17.c)
/*
* 程式名:book17.c,此程式演示賦值運算子的使用。
*/#include
intmain()
執行效果
sizeof是c語言的關鍵字,它用來計算變數(或資料型別)在當前系統中占用記憶體的位元組數。
sizeof不是函式,產生這樣的疑問是因為sizeof的書寫確實有點像函式,sizeof有兩種寫法:
用於資料型別
sizeof
(資料型別)
;
資料型別必須用括號括住。
printf
("字元型變數占用的記憶體是=%d\n"
,sizeof
(char))
;// 輸出:字元型變數占用的記憶體是=1
printf
("整型變數占用的記憶體是=%d\n"
,sizeof
(int))
;// 輸出:整型變數占用的記憶體是=4
用於變數
sizeof
(變數名)
;sizeof 變數名;
變數名可以不用括號括住,帶括號的用法更普遍,大多數程式設計師採用這種形式。
int ii;
printf
("ii占用的記憶體是=%d\n"
,sizeof
(ii));
// 輸出:ii占用的記憶體是=4
printf
("ii占用的記憶體是=%d\n"
,sizeof ii)
;// 輸出:ii占用的記憶體是=4
在±*/四則運算符中,*/的優先順序高於±,在c語言中,其它的運算子都有優先順序,我不想介紹它們的優先順序,我寫了二十年的程式,也記不住各種運算子的優先順序的關係。
我不建議程式設計師記住各種運算子的優先順序,而是用括號解決全部的問題,括號的優先順序是最高的,括號中的表示式會優先執行,這樣各個運算子的執行順序就一目了然了。
int d = a +
(b * c)
;
C語言 運算子與 運算子
我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...
C語言 運算子和 運算子
變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...
C語言運算子
1級優先順序左結合 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子 字尾增量運算子 字尾增量運算子 2級優先順序右結合 邏輯非運算子 按位取反運算子 字首增量運算子 字首增量運算子 負號運算子 型別 型別轉換運算子 指標運算子 位址與運算子 sizeof 長度運算子 3級優先順序左結合 ...