运算符
运算符:处理数据的工具
- 运算符相关的概念
- 赋值运算符
- 算术运算符
- 关系运行算符
- 逻辑运算符
- 其他运算符
- 位运算符
运算符相关概念
运算符:具有一定运算规则的符号。
运算符分类:
按照功能分:赋值运算符 算术运算符 关系运算符 逻辑运算符 其他运算符 位运算符
按照操作数分:单目运算符 双目运算符 三目运算符
表达式
具有一定意义的式子,可以是变量、常量、也可以是操作数和运算符的结合
表达式一定有结果的
根据运算符的操作数个数可以分为:
单目运算符:~7 a++ ++a
双目运算符:+-*/运算
三目运算符: ? :
运算符优先级:
()单目 双目 三目 赋值组合
双目:算数 关系 逻辑
赋值运算符
符号:=
作用:把 = 右侧的值放入到左侧的“空间”去
= 左侧必须是一个内存空间
算数运算符
符号:+-*/%(取模)
/:除 两边如果都是整型,结果是整型,如果一个是小数结果就是小数
%(取余 取模):两边必须是整数
m%n的结果是0~n-1之间,m%n==0,m能被n整除 m是n的倍数 n是m的因数,整除关系使用%看结果是否为0。
关系运算符
符号:> >= < <= ==(等于) !=(不等于)
结果:就是看数据之前的关系成立不成立,关系成立就是真(1),不成立就是假(0)
逻辑运算符
&&(逻辑与) ||(逻辑或) !(逻辑非)
在C语言中非0为真,0为假 逻辑运算符的结果:0或1
&&(逻辑与)
格式:表达式1&&表达式2
规则:全真为真,有假则假
表达式1 表达式2 表达式1&&表达式2
真 真 真
真 假 假
假 不计算 假
||(逻辑或)
格式:表达式1||表达式2
规则:全假为假、有真则真
表达式1 表达式2 表达式1||表达式2
真 不计算 真
假 真 真
假 假 假
!(逻辑非)
格式:!表达式
规则:真变假,假变真
表达式 !表达式
真 假
假 真
自增自减++ -- a++ = a=a+1
如果a++ ++a作为独立语句使用,++在前在后没有区别
如果a++ ++a参与运算,++a是先加后用 a++先用后加
如:
int c = 5;
int d = 5;
int e = ++c; // c=c+1; c=6; e=6;
int f = d++; // f=5 d=d+1; d=6
printf("%d %d\n",e,f); // 6 5
printf("%d %d\n",c,d); // 6 6
int k = 3;
int t = ++k + 3;
printf("%d\n",t); // 7
printf("%d\n",k); // 4
三目运算符 ? :
格式:表达式1?表达式2:表达式3
规则:先计算表达式1的结果,如果为真,执行表达式2或者选择表达式2的结果作为三目运算符表达式的结果
如果为假,执行表达式3或者选择表达式3的结果作为三目运算符表达式的结果。
复合运算符
算数运算符 位运算符组合
+= -= *= /= %= &= |= ^= << = >>=
int a = 5;
a += 5; // a = a + 5; a = 10;
printf("%d",a);
逗号运算符
从左往右,最后一个表达式的结果和类型,作为逗号运算符的结果和类型
int a = 5;
int d = (a++,a+5,a-3); // d = 3
printf("%d",d);
如果 .... 否则 ....
if-else结构
if(条件表达式)
{
// 语句块1 --- 条件表达式结果为真的时候执行的语句
}
else
{
// 语句块2 ---条件表达式结果为假的时候执行的语句
}
执行流程:
计算条件表达式的结果,如果为真执行,执行语句块1,否则 执行语句块2