文档介绍:第三讲运算符以及数据类型
运算符及表达式
数据类型转换
类型定义
运算符及表达式
C语言运算符可以分为:算术运算符、逻辑运算符、关系运算符、位运算符、赋值运算符。
算术运算符和算术表达式
1. 算术运算符:加、减、乘、除及取模即:+,-,*,/,%来表示。
C语言规定:
(1)模运算符%,仅用于整型变量或整型常量。
(2)优先级:一个表达式中如有多个运算符,则计算先后次序为相应运算符的优先级高的优先。乘、除、模优先级高于加、减的优先级。
(3)结合方向:是一个运算对象两侧的运算符的优先级别相同时,应遵循的处理规则。
算术运算符的结合方向是从左至右;
赋值运算符的结合方向是从右至左。
算术表达式:由算术运算符、括号以及操作对象组成的符号C语言语法规则的表达式称为算术表达式。
赋值语句
1. 赋值运算符
语言的赋值运算符是“=”,它的作用是赋值运算符右边表达式的值赋给其左边的变量。
例如:a=10,x=a+5,前者是把常量10赋给变量a,后者是将表达式a+5的值赋给变量x.
注意:如果“=”两侧的类型不一致,在赋值时要进行类型转换。例如a=b,执行该语句时,b的结果转换为a的类型后才能进行赋值运算。
2. 复合赋值运算符
C语言允许在赋值运算符“=“之前加上其它运算符,以构成其复合运算符。复合运算符多数为双目。
复合运算符有:
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
例:
a+=2 等价于 a=a+2
x*=y+5 等价于 x=x*(y+5)
x%=8 等价于 x=x%8
赋值运算符都是自右向左执行。
3. 赋值语句与赋值表达式
赋值语句最简单的形式是:
<变量>= <表达式>;
功能:是赋值运算符右边的“表达式”的值赋给左边的变量。
赋值表达式也可以包含复合的赋值运算符,例:
如果a=10,表达式a+=a-=a*a的值为-180。其步骤为:
(1)先进行a-=a*a的计算,它相当于a=a-a*a=10-10*10=-90.
(2)再进行a+=-90的计算,它相当于a=a+(-90)=-90-90=-180.
4. 自增自减运算符
i++(或i--)表示在使用该表达式值之后将i值加1(或减1)。
++i(或--i)表示在使用该表达式值之前将i值加1(或减1)。
说明:
(1)++和--仅适用于变量,不能用于常量或表达式。
(2)++和--运算符的结合方向是“至右向左”。
Main()
{int a=100;
printf(“a++=%d\n”,a++);
printf(“++a=%d\n”,++a);
printf(“a--=%d\n”,a--);
printf(“--a=%d\n”,--a);
}
输出结果:
a++=100
++a=102
a--=102
--a=100
关系运算符和关系表达式
1. 关系运算符
关系运算符均为两目运算符。共有六种:
> 大于< 小于
>= 大于等于<= 小于等于
== 等于!= 不等于
关系运算符要求两个操作数是同一种数据类型,其结果为一逻辑值,即关系成立时,其值为真(true),用非0值表示;关系不成立时,其值为假(false),用0表示。
关系运算符的优先级借低于算术运算符,关系运算符==和!=低于前四种运算符,并且结合方向均为自左至右。
2. 关系表达式
由关系运算符将两个表达式连接起来的有意义的式子称为关系表达式。
如:a+b<c-6
先进行a+b和c-6两个算术表达式的运算,得到两个值后再进行比较,从现而求出关系表达式的值。其值为0或非0。
关系表达式的值是一个逻辑值,即“真”或“假”。用1表示“真”,用0表示“假”。
如:
a=4,b=1,C=a>b;c的值为1,
若a=1,b=8,x=a>b;x的值为0。
逻辑运算符和逻辑表达式
逻辑运算符有“&&“(逻辑与)、”||“(逻辑或)和”!“(逻辑非)三种。
逻辑运算符的操作对象为零或非零整数值,.
逻辑运算规则
数据a
数据b
a&&b
a||b
!a
!b
T
T
T
T
F
F
T
F
F
T
F
T
F
T
F
T
T
F
F
F
F
F
T
T
逻辑表达式
由逻辑运算符和其操作对象组成表达式称为逻辑表达式。
位运算符
位(bit)运算是C语言的一大特色,可直接对构成内存的基本单位
“字节”(byte)进行按位操作。按位与(&)
操作规则:参加运算的两个运算量,如果两个相应的位均为1,则该
位的结果为1,否则为0,
接位与
运算量1
0
1
0