6、算术运算符与算术表达式

目录

一、算术运算符

二、算术表达式

三、优先级与结合性

1. 算术运算符的优先级

2. 算术运算符的结合性

四、自增/自减运算符


一、算术运算符

算术运算符包括两个单目运算符(正和负)和5个双目运算符(即乘法、除法、取模、加法和减法)

6、算术运算符与算术表达式_第1张图片

在上述算术运算符中,取模运算符“%”用于计算两个整数相除得到的余数,并且取模运算符的两侧均为整数,如7%4的结果是3。

注意1:其中的单目正运算符是冗余的,也就是为了与单目负运算符构成一对而存在的。单目正运算符不会改变任何数值,如不会将一个负值表达式改为正。

注意2:运算符“-”作为减法运算符,此时为双目运算符,如5-3。“-”也可作负值运算符,此时为单目运算,如-5等。

二、算术表达式

在表达式中使用算术运算符,则该表达式称为算术表达式。例如:

两个整数相除的结果为整数,如7/4的结果为1,舍去的是小数部分。但是,如果其中的一个数是负数时会出现什么情况呢?此时机器会采取“向零取整”的方法,即为-1,取整后向0靠拢。

注意:如果用+、-、*、/运算的两个数中有一个为实数,那么结果是double型,这是因为所有实数都按double型进行运算。

三、优先级与结合性

C语言中规定了各种运算符的优先级和结合性,首先来看一下有关算术运算符的优先级。

1. 算术运算符的优先级

在进行表达式求值时,通常会按照运算符的优先级别从高到低依次执行。在算术运算符中,*、/、%的优先级别高于+、-的级别。例如,如果在表达式中同时出现*和+,那么应先运算乘法:

在上述表达式中,因为*比+的优先级高,所以会先进行y*z的运算,最后加上x。

注意:在表达式中常会出现这样的情况,例如,要进行a+b,再将结果与c相乘,一不小心将表达式写为a+b*c。因为*的优先级高于+,这样的话就会先执行乘法运算,显然不是期望得到的结果。这时应该怎么办呢?可以使用括号“( )”将+运算级别提高,使其先进行运算,就可以得到预期的结果了,例如解决上式的方法是(a+b)*c。括号可以使其中的表达式先进行运算的原因在于—括号在所有运算符中的优先级别是最高的。

2. 算术运算符的结合性

当算术运算符的优先级相同时,结合方向为“自左向右”。例如:

因为减法和加法的优先级是相同的,所以b先与减号相结合,执行a-b的操作,然后执行加c的操作,这样的操作过程就称为“自左向右的结合性”。

四、自增/自减运算符

在C语言中还有两个特殊的运算符,即自增运算符“++”和自减运算符“--”。自增运算符和自减运算符对变量的操作分别是增加1和减少1。

自增运算符和自减运算符可以放在变量的前面或者后面,放在变量前面称为前缀,放在后面称为后缀。使用的一般方法如下:

在上面这些例子中,运算符的前后位置不重要,因为所得到的结果是一样的,自减就是

减1,自增就是加1。

注意:在表达式内部,作为运算的一部分,两者的用法可能有所不同。如果运算符放在变量前面,那么变量在参加表达式运算之前完成自增或者自减运算;如果运算符放在变量后面,那么变量的自增或者自减运算在变量参加了表达式运算之后完成。

你可能感兴趣的:(C语言基础,c语言,算法,c++)