学科分类
目录
C语言

算术运算符与算术表达式

C语言中的算术运算符就是用来处理四则运算的符号,这是最简单、最常用的运算符号,下面将对算术运算符与算术表达式进行介绍。

1、算术运算符

C语言中的算术运算符与数学中的算术运算符作用是一样的,但其组成与数学中的算术运算符稍有不同,C语言中的算术运算符含义及用法如表1所示。

表1 算术运算符

运算符 运算 范例 结果
+ 正号 +3 3
- 负号 b=4;-b; -4
+ 5+5 10
- 6-4 2
* 3*4 12
/ 5/5 1
% 取模(即算术中的求余数) 7%5 2
++ 自增(前) a=2;b=++a; a=3;b=3;
-- 自减(前) a=2;b=--a; a=1;b=1;
++ 自增(后) a=2;b=a++; a=3;b=2;
-- 自减(后) a=2;b=a--; a=1;b=2;

算术运算符中的+、-(正号、负号)与++、--运算符在运算时只需要一个变量,例如a++、-b,只对一个变量起作用,因此它们被称为单目运算符;其余的运算符在运算时需要两个变量,例如+(加号)、%等是对两个变量进行运算(a+b、a%b),因此它们被称为双目运算符。

2、算术表达式

使用算术运算符连接起来的表达式就称为算术表达式,例如下面代码中的算术表达式(假设a、b、c的值分别为10、20、3)。

c=a+b                   //结果为30
a++                     //结果为11
b=--c                   //结果为2
a%b+c--                    //结果为13

上述算术表达式“a%b+c--”的计算机顺序为:先计算a%b,结果为10,再计算10+c,结果为13,表达式计算出结果之后,再执行c--,表达式执行完毕,c的值为2。这样的计算顺序是由算术运算符的优先级决定的,运算符的优先级将3.9节进行讲解。

3、算术运算符的注意事项

算术运算符看上去都比较简单,也很容易理解,但在实际使用时还有很多需要注意的问题,接下来就针对其中比较重要的几点进行详细地讲解,具体如下:

(1)进行四则混合运算时,运算顺序遵循数学中“先乘除后加减”的原则。

(2)在进行自增(++)和自减(--)运算时,如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。

请仔细阅读下面的代码块,思考运行的结果。

int num1 = 1;    
int num2 = 2;    
int res = num1 + num2++;
printf("num2=%d" + num2);
printf("res=%d" + res);

上面的代码块运行结果为:num2=3,res=3,具体分析如下:

第一步:运算num1+nun2,此时变量nun1,num2的值不变。

第二步:将第一步的运算结果赋值给变量res,此时res值为3。

第三步:num2进行自增,此时其值为3。

(3)在进行除法运算时,若除数和被除数都为整数,得到的结果也是一个整数。如果除法运算有浮点数参与运算,系统会将整型数据隐式转换为浮点类型,最终得到的结果会是一个浮点数。例如,2510/1000属于整数之间相除,会忽略小数部分,得到的结果是2,而2.5/10的实际结果为0.25。

请思考下面表达式的结果:

3500/1000*1000

结果为3000。因为表达式的执行顺序是从左到右,所以先执行除法运算3500/1000,得到结果为3,然后再乘以1000,最终得到的结果就是3000。

(4)取模运算在程序设计中有着广泛的应用,例如判断奇偶数的方法实际上就是对2取模,即根据取模的结果是1还是0判断这个数是奇数还是偶数。在进行取模运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。如:(-5)%3=-2,而5%(-3)=2。

image-20200520110637045多学一招:运算符的结合性

运算符的结合性指同一优先级的运算符在表达式中操作的结合方向,即当一个运算对象两侧运算符的优先级别相同时, 运算对象与运算符的结合顺序。大多数运算符结合方向是“自左至右”。示代码如下:

*a-b+c;*

上述代码中b 两侧有-和+两种运算符的优先级相同, 按先左后右的结合方向, b 先与减号结合, 执行a- b 的运算, 然后再执行加c 的运算。

点击此处
隐藏目录