1、运算符的基本概念
运算符的作用:运算符是高速1编译程序执行特定算术或逻辑操作的符号。
按照类型分为三大类:算术运算符、关系运算符与逻辑运算符、按位运算符。
按照参与运算的操作数分为:单目运算、双目运算、三木运算。
运算符的结合性:C语言的运算符结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。
运算符的优先级:C语言运算符的优先级分为15个级别,1级最高,15级最低,优先级越高,则先运算;优先级相同,按照结合性来运算 。
优先级如下图:
2、算术运算符
- 算术运算符包括:+ - * \ %
- 加法(+):是双目运算,具有左结合性;
- 减法(-):是双目运算,具有左结合性,也可以作为负值运算;
- 乘法运算(*):是双目运算,具有左结合性;
- 除法(/):是双目运算,具有左结合性;
- 取余(%):是双目运算,具有左结合性。要求参与运算的数据必须为整数类型,不能为float和double类型。
注意点:
- 算术运算符之间的优先级为,* / %优先级大于- +;
- 优先级相同时按照做结合来运算;
- 取余运算参与运算的数据类型必须是整数;
- 运算时可能会牵涉到数据类型的转换。
3、赋值运算符
赋值运算表达式:由“= ”连接的式子称为赋值表达式,功能是计算表达式的值,并赋值给左边的变量;
一般形式:变量 = 表达式
特性:右结合性。
优先级:优先级是14,仅高于“,”运算符。
4、自增自减运算符
前缀表示法:++x --x,x代表变量名,运算方法:先完成自增自减运算,再将结果作为整个表达式的值;
后缀表示法:x++ x--,运算方法:先将x的当前值取出作为表达式的值,再将完成x的自增自减;
结合性:左结合
优先级:优先级为2,比较高!
注意:自增自减比较容易迷惑人,特别注意,多加练习。
练习题:
int main()
{
int x = 1,y = 1;
if(x++==2 && ++y==2) {
x =7;
}
printf("x=%d, y=%d\n", x, y);
return 0;
}
5、sizeof运算符
概念:sizeof在C语言中不是一个函数,是一种单目操作符,以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。
用法:sizeof(数据类型/变量/常量)
6、关系运算符
概念:关系运算符又叫比较运算符,用来比较两个量的大小关系,包括:> >= < <= == != 6种
结合性:左结合
优先级:关系运算符的优先级低于算术运算符,高于赋值运算符,;但< <= > >=的优先级相同,高于==和!=;==和!=的优先级相同。
注意:C语言的数值都有真假性,非0即真,只有0为假,所以关系运算符范围值只有两个,要么是1,要么是0;
7、逻辑运算符
概念:逻辑运算符包括三种:&&(与运算)、||(或运算)、!(非运算)
结合性:&&和||为双目运算,具有左结合性;!运算符为单目运算符,具有右结合性
优先级:!的优先级为2和自增自减优先级相同,高于算术运算符和关系运算符;&&和||优先级低于关系运算符,高于赋值运算符。
返回值:
- && 运算:参与运算的两个量都为真,结果才为真,否则为假,即一假则假;
- || 运算:参与运算的两个量只要有1个为真,结果就为真;两个量结果都为假,结果才为假,即一真为真;
- ! 运算:参与运算量为真,结果为假;参与运算量为假,结果为真。
注意点:
&&运算:只要第一个条件表达式为假,那么后面的条件就不参与运算了;
|| 运算:只要第一个条件表达式为,那么后面的条件就不参与运算了。
8、三目运算符
形式:表达式1 ? 表达式2 : 表达式3
运算方法:如果表达式1的值为真,则以表达式2的值作为整个条件表达式的值;否则以表达式3的值作为整个条件表达式的值
优先级:·优先级为13,低于关系运算符和算术运算符,但高于赋值运算符。
结合性:右结合,自右至左,例如:a>b?a:c>d?c:d应理解为
a>b?a:(c>d?c:d)
9、
逗号运算符
含义:使用逗号将两个表达式连接起来组成一个表达式,就是逗号表达式
形式:表达式1,表达式2
运算方法:求值过程是分别求出两个表达式的值,并以表达式2的值作为整个逗号表达式的值。