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