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. 小结
算数运算符作为基本的运算符,承担着进行数值计算的基本功能。这里需要特别注意的有以下几点:
- 除法运算符在变量类型不同的时候会产生不同的结果,我们会经常利用这些特性。
- 自加或者自减操作的前置与后置不会影响自身的数值变化,但是会影响赋值过程。如果疏忽,会引起错误。
- 其他的算数运算符,与我们在算数中所了解的算数运算符一致。