1、运算符:
连接两个操作数(常量、变量)的符号
用运算符按照一定的规则连接的式子称为表达式
运算符的分类:
1)操作数的个数:
单目运算(++ sizeof !)
双目运算符:。。。。
三目运算符:
?:
2) 功能:
算术运算符、关系和逻辑运算、位运算
2、算术运算符
1)什么东西?
进行算术的运算,总计5个
+ - * / %
双目运算符
a+b a*3 b/5 10%3
2)优先级
* / 3
+ - 4
乘除的优先级要高于加减的
3)结合性
前提:优先级相同
左结合:从左到右结合计算
int a=3,b=2;
a+b*3/1-5
--> a+6-5
--> 4
4)注意事项
% 求余数
m%n求余数
m = 0 结果是 0
n = 0 结果无意义,n不能为0
m > n 结果正常取余数
m < n 结果是 m
3、赋值运算符
1)什么东西?
= 作用:把等号的右侧的值(常量、表达式)赋值给等号左边的变量
注意:等号的左边一定要是变量
a+2 = b+2 (错误的) 10=a(错误的)
a = 2; b=a+3;
2)优先级
14
3)结合性
右结合:从右至左
int a,b,c,d;
a = b = c = d = 0;
int a=b=c=d=0;(错误的)
4)注意事项
复合赋值运算符:总共有5个
+= a+=2;--> a = a+2;
-= a-=2;--> a = a-2;
*= 。。。。
/=
%=
4、自增、自减运算符
1)什么东西?
++ -- 相当于让运算符连接的操作数自身的值+1或者-1
格式:
变量名++ ++ 变量名
变量名-- --
变量名
让变量的值自动的+1或者-1
2)优先级
2
3)结合性
右结合
(a++)+(++b)
-a++ --> -(a++)
4)注意事项
技巧:
int a=3; a++ ++a
表达式的值 3 4
a变量的值 4 4
如果a在++符号的前面,先取出a的值作为表达式的值,然后a自身值+1
口诀:先用后变
如果a在++符号的后面,先让a自身值+1,然后取出a的值作为表达式的值
口诀:先变后用
5、sizeof运算符
1)什么东西?
计算常量、变量、数据类型在我们内存中占用的字节数
2)用法
常量上
: sizeof(10) sizeof(2.3) sizeof(‘a‘)
---> sizeof 10 sizeof 2.3
sizeof("a") //2
‘
变量上:int a; sizeof(a);
数据类型上:sizeof(int) sizeof(float) sizeof(char)
3)结合性
4)注意事项
sizeof不是第一个函数,是一个运算符
sizeof(‘a‘) 4个字节,字符型的常量在C标准的编译中用int型存储的
6、关系运算符
真假性问题:
所有的数值都有真假性
非0
就真(1) 0就是假(0)
1)什么东西?
判断操作数之间的关系,总计有6个
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
双目运算符
a>3 b>a+2; 1>2
2)优先级
6
3)结合性
左结合
a = 1>2<3>0;
((1>2)<3)>0
1>0
4)注意事项
7、逻辑运算符
1)什么东西?
更多的时候是判断多个条件是否同时成立(同时为1)
双目运算符
&& 逻辑与&&符号两边的表达式都必须为真
口诀:同真为真
一假则假
|| 逻辑或 ||符号两边的表达式有一个为真,结果就为真
口诀:同假为假
一真则真
! 逻辑取反
(单目运算,右结合)
口诀:真变假
假变真
2)优先级
! 2
&& 11
|| 12
3)结合性
左结合
4)注意事项
短路的问题:
掌握口诀就行
a && b+2 || b-5
8、条件运算符
1)什么东西?
? :
进行了一个简单的判断
a>b?a:b -->取出a、b中的最大值
先判断a>b是否为真:
如果为真:a的值作为条件表达式的值返回
如果为假:b的值作为条件表达式的值返回
2)优先级
13
3)结合性
左结合
(num1>num2?num1:num2)>num3 ? num1>num2?num1:num2 :num3
4)注意事项