C语言算术表达式与数学中相似,是由数字和运算符号组成的式子,可以简单清晰地记录或描述计算过程和内容。
我们把算术运算符与数据结合得到的式子叫做算术表达式,把有赋值号的式子叫赋值表达式,把逗号运算符表示的式子叫逗号表达式。
C语言中的算术运算符包括:+、-、*、/、%。它们都是双目运算符,即运算对象有两个。使用时需要注意以下几点:
1、乘号*在C语言中不可省略,即a*b。
2、%为取余数,它的运算对象只能是整型。
3、运算符在计算时如果运算符两边的数据类型相同,则得到的数据也是这个类型,例如:1/2=0。因为1,2都是整型,则结果也是整型。
4、如果运算符左右两边的数据类型不同时,要往精确度更高的类型转换,例如:1.0/2=0.5,因为1.0是浮点型,2是整型,浮点型的精度比整型精度高,所以要把整型自动转为浮点型。即2变为2.0,然后式子变为1.0/2.0,式子左右两边类型相同,都为浮点型,结果也为浮点型。具体的转换规则可以认为往取值范围更高的那方转换。即:char > short > unsigned short > int > unsigned int > float > double。
5、算术表达式没有改变或保存表达式的值。例如:a+b。这是一个算术表达式,它只表示将a与b两个数相加,但是需要注意a与b的值都没有改变,而且它们的和值也没有保存下来。这是很容易出现的一种错误。例如:a=(b++,c=c+2,a+b,b+c) 这个表达式先算b++,即b自加1。然后算c=c+2,c的值改变。然后a+b,这一步不涉及到赋值运算,所以a与b的值都不变。然后b+c,这一步是逗号表达式的最后一个式子,我们经过计算是将这个式子的值赋值给a,计算时用到的b是第一个式子的结果,用到的c是第二个式子运行的结果,第三个式子并没有改变任何数值。
6、算术运算符的优先级在众多的运算符中仅次于()与单目运算符。其中*、/、%的优先级比+、-的优先级高一级。
7、算术运算符的结合性为自左向右。例:a+b+c-d 是先算a+b在加c在减d,运算顺序是自左向右的。
算术运算符虽然只是一个由算术运算符与数据结合的式子,但是它在实际应用中需要注意的问题有很多,这需要我们通过大量的练习最终总结出一些规律。