1、算术运算符:+—*/%
%要求参与运算的两个量必须是整型或字符型的,实型(float,double等)的数据不能做%运算。
算术表达式
运算符和数据可以组成运算的式子,称为表达式。举例:10+20 (a*2)/b (x+r)*8-(a+b)/10 5
单个的常量、变量、函数也可作为是表达式的特例。
C语言的表达式写法还有一些讲究,下面都是错误的表达式:2ab 等。表达式中的乘号(*)是不能省略的。
C语言中,表达式的大、中、小括号都要用小括号()表示。
用单引号或双引号引起来的内容不是运算符或表达式,例如'+'不是运算符,它们是字符型常量;“10+20”也不是表达式,他是包含5个字符的字符串常量。
表达式是没有分号的,如果在表达式后添加了分号,就构成表达式语句,后者可被计算机执行。
表达式都有一个值和类型。例如表达式1+1的运算结果是2,2就是这个表达式的值。表达式的类型就是结果值的类型,即2的类型,所以该表达式的类型也是int型的。
算术运算时,两个量类型不一致的允许参与运算,运算结果的类型与其中较高类型量的类型一致。(在计算表达式时,参与运算的两个数的类型有可能一致,也有可能不一致;一致时,与两个量的类型一样。不一致运算结果的类型与高类型一致。数据类型由低到高的顺序依次为:char-int-float-double)例如:3.4+3结果为6.4
注意:运算的结果可能超出变量所能表示的数值范围。
自动类型转换有两种。
强制类型转换:
强制类型转换的写法是在“量”前加“带括号的类型说明符”:(类型说明符)表达式。其功能是把表达式的运算结果强制转换为“类型说明符”所说明的类型。举例:(int)3.8;/3
c语言规定类型说明符必须用括号括起来。“量”加与不加括号在语法上都正确,但效果不同:举例:
float x=4.5,y=2.1;则:(int)(x+y)值为6,先求和为6.6,在将和转换为int型的6.
(int)x+y 值为6.1,先把x转换为int型的值为4,然后在求和为6.1.
赋值(=):将值送入变量保存。
赋值表达式:在C语言中,=也被认为是运算符,成为赋值运算符。c语言规定赋值表达式的值为赋值后左边变量的新值,赋值表达式的类型与左边变量的类型相同。举例:赋值表达式a=1的值是1赋值表达式b=10+20式子的值是30,赋值表达式c=a+1,,该赋值表达式的值是2,这三个表达式值的类型都是整型。
注意:int x=y=25;错误:变量定义时赋初值不允许连等。连等只能出现在执行语句中。也就是说有int、float、double、char等类型说明词时不允许连等,没有这些类型说明词就允许连等。
复合赋值运算:+= -= *= /= %=
逗号运算:
c语言中逗号(,)也是一种运算符,称逗号运算符。逗号可以把多个表达式连接起来。表达式1,表达式2,表达式3;
它的作用是依次从左到右分别计算各个表达式的值;以最后一个表达式(上例为表达式3)的值作为整个逗号表达式的值。逗号运算符优先级最低。
++ 、--自增运算符、自减运算符
++ 、--的运算符的优先级仅次于括号()。
++、--与数据同样可以组成表达式。
单独作为一个语句时,i++;和++i;是一样的,都是使i自增1,i--;和--i;也是一样的,都是使i自减1,没有什么区别,但在表达式中,数据位于左、右就有区别了。
设i=5;j=10;规定表达式i++的值为i被+1之前的值,所以表达式i++的值为5.但在计算表达式后,变量i的值要变为6。规定++i的值为i被+1之后的值,即6.也就是说,++i这个表达式的值为6,在计算后变量i的值也为6.