运算符
作用
运算的符号
赋值运算符
= 将符号右边的变量的值或值赋值给左边的变量
如:
int a = 10;
int b = 0;
算数运算符
+
加
-
减
*
乘
/
除
%
取余
++
递增
++
在前
:
先递增
,
在参与运算
流程
:
取值
+1
赋值
++
在后
:
先参与运算
,
在递增
流程
:
取值
+1
赋值
使用取值参与运算
--
递减
--
在前
:
先递减
,
在参与运算
--
在后
:
先参与运算
,
在递减
注意
小类型与小类型运算
,
结果为小类型
如
;
1 / 2 = 0;
double c = 1 / 2;
小类型与大类型运算
,
结果为大类型
double c = 1 / 2.0;
复合运算符
+=
int a = 1;
int b = 2;
//a = a + b;
a += b;
-=
int a = 1;
int b = 2;
//a = a - b;
a -= b;
*=
int a = 1;
int b = 2;
//a = a * b;
a *= b;
/=
int a = 1;
int b = 2;
//a = a / b;
a /= b;
%=
int a = 1;
int b = 2;
//a = a % b;
a %= b;
关系运算符
< 小于
如:
int a = 2;
int b = 1;
a > b
> 大于
<= 小于或等于
>= 大于或等于
== 判断值与数据类型都相同,相同为真,不同为假
'a' == 97
!= 不等于,不同为真,相同为假
'a' != 97
注
除
0
以外都是真
0
为假
逻辑运算符
&& 短路与
同真为真,有假为假
1 && 0
10 > 1 && 10 > 2
判断年龄在
18 ~80
之间
int age = ?;
18 <= age && age <= 80
|| 短路或
有真为真,同假为假
1 || 0
! 非
非真为假,非假为真
!1
!0
int a = 1;
a = !a;
a = !a;
位运算符
| 或
有1为1,全0为0
2 | 8 = 10
0010
1000
1010
& 与
全1为1,有0为0
2 & 8 = 0
0010
1000
0000
~
取反
0
变
1,1
变
0
~2
0000 0000 0000 0000 0000 0000 0000 0010
1111 1111 1111 1111 1111 1111 1111 1101
1111 1111 1111 1111 1111 1111 1111 1100
1000 0000 0000 0000 0000 0000 0000 0011
-3
^ 异或
相同为0,不同为1
2 ^ 8 = 10
0010
1000
1010
>> 右移
分类
逻辑右移
:
高位补
0
,低位溢出
算数右移
:
高位补符号位,低位溢出
4 >> 2
0000 0000 0000 0000 0000 0000 0000 0100
0000 0000 0000 0000 0000 0000 0000 0001
-4 >> 2
1000 0000 0000 0000 0000 0000 0000 0100
逻辑右移
:
0010 0000 0000 0000 0000 0000 0000 0001
算数右移
:
1110 0000 0000 0000 0000 0000 0000 0001
<< 左移
4 << 2
0000 0100
0001 0000
1 << 2;
0000 0001
0000 0100
1<<3
0000 1000
计算2的10次方
1 << 10
三目运算符
三目又称三元
使用该符号需要三个变量或值
一元运算符
!
!true
~
~7
++
--
二元运算符
=
+
-
*
/
%
+=
-=
*=
/=
%=
<
>
<=
>=
...
语法
条件表达式?值1:值2;
条件表达式:结果为真或假的表达式
关系运算符
逻辑运算符
执行流程;
当条件表达式值为真,取值1,反之取值2
案例
获取
a,b
之间的最大值
int a = ?;
int b = ?;
int max = a > b?a:b;
printf("max = %d\n",max);
获取
a,b,c
之间的最大值
int a = ?;
int b = ?;
int c = ?;
//int max = a > b?a:b;
//max = max > c ? max : c;
int max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
printf("max = %d\n",max);
运算符号优先级
输入
作用
将控制台中的内容录入到程序
语法
scanf("占位符",&变量);
使用
键盘录入一个数打印输出
int num = 0;
scanf("%d",&num);
printf("num = %d\n",num);