一、C語言的運算符
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,此程序演示算術運算符的使用。
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
int main()
{
double A=18; // 定義變量A,賦值18
double B=5; // 定義變量B,賦值5
printf("A的值是:%lf\n",A);
printf("B的值是:%lf\n",B);
printf("A+B的值是:%lf\n",A+B);
printf("A-B的值是:%lf\n",A-B);
printf("A*B的值是:%lf\n",A*B);
printf("A/B的值是:%lf\n",A/B);
//printf("A除B的余數是:%lf\n",A%B);
A++; // 自增1
printf("A自增后的值是:%lf\n",A);
B--; // 自減1
printf("B自減后的值是:%lf\n",B);
return 0;
}
運行效果
變量的自增或自減有兩種寫法:
變量名++; // 表示在本次使用變量后再自增;
++變量名; // 表示在本次使用變量前自增;
變量名--; // 表示在本次使用變量后再自增;
--變量名; // 表示在本次使用變量前自減;
示例(book16.c)
/*
* 程序名:book16.c,此程序演示算術運算符++和--的使用。
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
int main()
{
int ii=0; // 定義變量ii並初始化
ii=10;
printf("ii++的值是:%d\n",ii++); // 在使用后自增
printf("ii的值是:%d\n",ii);
ii=10;
printf("++ii的值是:%d\n",++ii); // 在使用前自增
printf("ii的值是:%d\n",ii);
return 0;
}
運行效果
三、賦值運算符
下表列出了 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,此程序演示賦值運算符的使用。
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
int main()
{
int C=0; // 定義變量C並初始化
int A=21; // 定義變量A並初始化
C=A;
printf("運算符 = 演示,C的值 = %d\n",C);
C+=A; // C=C+A;
printf("運算符 += 演示,C的值 = %d\n",C);
C-=A; // C=C-A;
printf("運算符 -= 演示,C的值 = %d\n",C);
C*=A; // C=C*A;
printf("運算符 *= 演示,C的值 = %d\n",C);
C/=A; // C=C/A;
printf("運算符 /= 演示,C的值 = %d\n",C);
C=200;
C%=A; // C=C%A;
printf("運算符 %= 演示,C的值 = %d\n",C);
return 0;
}
運行效果
四、sizeof運算符
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語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道
如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!