C 語言中的算數運算符
上一個小節我們對 C 語言的運算符有了一個基本的了解,這節課我們來詳細的看下運算符中的算術運算符:
1. 算數運算符
算數運算符是用來進行算數運算的符號,主要包含以下幾個符號:
運算符 | 作用 | 示例 |
---|---|---|
= | 賦值 | a=1 |
+ | 加法或者正號 | a+b, +a |
- | 減法或者負號 | a-b, -a |
* | 乘法 | a*b |
/ | 除法 | a/b |
% | 取余數 | a%b |
++ | 自加 | ++a, a++ |
– | 自減 | –a, a– |
2. 實例
下面我們通過實際的程序來看看這些算數運算符是怎么應用的。
#include <stdio.h>
int main()
{
int a,b,c,e,f,g;
float d,h,i,j,k;
a=1;
b=2;
c=0;
f=4;
g=3;
h=1;
i=2;
j=4;
k=3;
printf("a=%d, b=%d, c=%d, f=%d, g=%d\n",a,b,c,f,g);
c=a+b;
printf("a+b=%d\n",c);
c=a-b;
printf("a-b=%d\n",c);
c=a*b;
printf("a*b=%d\n",c);
c=a/b;
d=h/i;
printf("a/b=%d, int\n",c);
printf("h/i=%f, float\n",d);
c=f/g;
d=j/k;
printf("f/g=%d, int\n",c);
printf("j/k=%f, float\n",d);
c=a%b;
printf("a%%b=%d\n",c);
c=b%a;
printf("b%%a=%d\n",c);
e=10;
c=++e;
printf("c=++e,c=%d, e=%d\n",c,e);
e=10;
c=e++;
printf("c=e++,c=%d, e=%d\n",c,e);
e=10;
c=--e;
printf("c=--e,c=%d, e=%d\n",c,e);
e=10;
c=e--;
printf("c=e--,c=%d, e=%d\n",c,e);
return 0;
}
顯示結果:
a=1, b=2, c=0, f=4, g=3
a+b=3
a-b=-1
a*b=2
a/b=0, int
h/i=0.500000, float
f/g=1, int
j/k=1.333333, float
a%b=1
b%a=0
c=++e,c=11, e=11
c=e++,c=10, e=11
c=--e,c=9, e=9
c=e--,c=10, e=9
可以看到,在 C 語言中對于加法,減法和乘法,與我們平時算數中所見的結果是一致的。
除法就要分兩種情況來討論了。從上面的例子可以看出,當除數和被除數都是整數的時候,他們的結果會是整數。這時的結果就是兩者相除的結果的數字的整數部分。
在例子中,1/2=0, 4/3=1
,因為 1/2 = 0.5
所以整數部分就是 0 , 4/3 ≈ 1.33333
,所以整數部分就是 1 。而在除法中,如果被除數或者除數兩者其中有一個是浮點數,那么這時顯示的結果就與我們在普通算數中得到的結果就一致了。但是有一點就是計算機不會顯示循環小數,就是不能用符號表示無限小數位,所以,只能在顯示的精度范圍內截取。所以這里我們看到的就是 1.333333 。
模除或者叫做取余的操作就是獲取不能被整數的剩余的整數部分。這個和數學中的規定是一致的。
++
和 --
分別叫做自加和自減。其本身的作用都是將自己本身數值加一或者減一。這是一個只需要一個變量就可以完成的運算,因此大家有時候也叫這種運算為一元運算。
從示例程序中可以看出,這兩種運算符的擺放位置是有兩種的,也就是可以放在變量前,也可以放在變量后。
如果只是單獨執行自加和自減,而沒有同時有賦值的情況發生,那么自加和自減的符號放在前后都是沒有差異的,大家可以從變量的顯示出來的數值看出其都是發生了加一或者減一的變化的。
但是,重點是:當我們配合賦值語句使用的時候,這兩種位置,前置與后置,就會產生不同的賦值效果。當自加與自減前置的時候,賦值語句獲得的是自加或者自減完成后的數值;當自加與自減后置的時候,賦值語句獲得的是自加或者自減之前的原始數值。這點一定要特別小心,以免引起錯誤。
3. 小結
算數運算符作為基本的運算符,承擔著進行數值計算的基本功能。這里需要特別注意的有以下幾點:
- 除法運算符在變量類型不同的時候會產生不同的結果,我們會經常利用這些特性。
- 自加或者自減操作的前置與后置不會影響自身的數值變化,但是會影響賦值過程。如果疏忽,會引起錯誤。
- 其他的算數運算符,與我們在算數中所了解的算數運算符一致。