首页 > 技术文章 > C语言:算数运算符

qianbi123 2014-11-01 19:52 原文

算数运算符顾名思义就是进行运算的符号

+ 加法运算符

- 减法运算符或负值运算符

* 乘法运算符

/ 除法运算符

% 模运算符或称取余运算符,要求%两侧均为整型数据

算术表达式:用算数运算符降数据连接起来的式子,称为算数表达式,例如:a+b、10/5等,如果表达式复杂的话,就要注意下运算的顺序,运算的顺序是按照运算符的结合方向优先级进行的。

结合方向

算术运算符的运算方向是从左向右。例如表达式2+3+4,先计算2+3

优先级

优先级越高,就越先结合,此时并没有参与运算仅仅是操作符与操作数结合到了一起:

负值运算符(-)> 乘法运算符(*)、除法运算符(/)、取模运算符(%)> 加法运算符(+)、减法运算符(-)

小括号

如果需要计算优先级低的,可以使用小括号括住,小括号的优先级是最高的

例如1+2*5-3,默认顺序是*、+、-

如果想优先执行加法,就应该这样写(1+2)*5-3,最后的结果都还是不同的。

计算顺序

多个操作符混合运算的话,优先级高的运算符与其操作数结合到一起,称为一个整体,但并没有计算,计算时要看最外层的运算符是什么,它会按照最外层的操作符的结合方向进行计算,然后一层层的计算。

例如表达式3*4+2*8/-4的计算顺序为:先-与4结合,然后3*4结合,5*8结合,结合的结果为(3*4)+((2*8)/(-4)),此时最外层为+

加法运算先计算左边的操作数,那么3*4先进行结果运算为12+((2*8)/(-4)),然后计算+右边的操作数((2*8)/(-4))

它的最外层是/,那么先计算左边的2*8计算后的结果为16/(-4),然后计算16/(-2)结果为-4

现在计算表达式为12+(-4),最终的结算结果为8

算术运算的注意点:

1.自动类型转换
int a = 10.6;
int b = 10.5 + 1.7;
2.自动将大类型转换为了小类型,会丢失精度
自动类型提升
int b = 10.5 + 10;
3.将右边的10提升为了double类型
double b = 1.0 / 2;
解决除法的精度问题
4.强制类型转换
double a = (double)1 / 2;
double b = (double)(1 / 2);

推荐阅读