1.算术运算符:
+ 加法 , 一目取整
- 减法, 一目 取负 -a
* 乘法
/ 除法
% 取模、求余 a%b a 和b 必须是整型
++ 自加 1 a++ / ++a
-- 自减 1
int a = 5 , b = 4 ;
printf("a++:%d \n " , a++ ); // 后缀加加 先取值 在自加 5
printf("a:%d \n " , a ); // 6
printf("++b:%d \n " , ++b ); // 前缀++ 先自加 再取值 5
printf("b:%d \n " , b ); // 5
2.关系运算符
> 大于 判断a是否大于 b a > b
< 小于 判断a是否大小于 b a > b
>= 大于等于 判断a是否大于或者等于 b a >= b
== 恒等于 (等于) 判断a是否等于 b a == b
!= 不等于 判断a是否不等于 b a != b
注意:
- 关系运算符用于判断表达式是否满足给定的大小条件。
- 关系运算符组成的表示是是关系表达式 ,他的值为 布尔值 (真/假)
- 注意== 不是= 不要搞错了
3.逻辑运算符
! 逻辑反 将逻辑真变假 ..... 真假交换
&& 逻辑与 可以将两个关系表达式 链接起来, 当左右两边的表达式都为真则表示真
|| 逻辑或 可以将两个关系表达式 链接起来, 当表达式其中一个为真则整个表达式为真
注意:
- &&逻辑与运算中如果左边表达式为假, 右边不会别运算
int a = 3 , b = 9 ;
if ( a > b && ++a ) ; 问a的值是多少?
- || 逻辑或运算的过程中如果左边表达式为真, 右边将不被运算
int a = 3 , b = 9 ;
if ( a < b || ++a ) ; 问a的值是多少?
- 注意==恒等于的小心思, 不要写少了, 建议把 左值 写成常量
// if ( a = 99 ) // 编译器表示没问题, 但是逻辑判断为真
// if ( 99 = a ) // 编译器直接报错 , 程序无法编译避免了一个秃头的机会
if (a = b) //非零则真
{
printf("a等于B\n");
}
else
{
printf("a不等于B\n");
}
4.位运算符
~ 位逻辑反 ~a 把a的二进制位每一个都取反 (1变0 / 0变1 )
& 位逻辑与 a&b 将a和b 的每一位进行位与操作
| 位逻辑或 a|b 将a和b 的每一位进行位或操作
^ 位逻辑异或 a^b 将a和b 的每一位进行位异或操作
>> 右移 a>>4 将a二进制位向右边移动 4位
5.特殊运算符
- 赋值运算符
- 不可以对常量进行赋值
- 不可以对数组赋值
- 可以连续赋值 , 顺序是从右往左
int a , b ;
int arr[10] ;
a = 100 ; //把100赋值给a
b = a ; // 把a 的值赋值给 b
arr = 199 ; // 不可以对数组赋值
//连续赋值
a = b = 100 ; // 先把100赋值给 b 然后在把 b 赋值给a
- 复合运算符
- 当左右两边有相同的操作数时 , 使用符合运算符可以更加直观,快捷
- 符合运算符不可以凭空捏造, 只有10 种:
a += b ; // 等价于 a = a + b ;
a -= b ; // 等价于 a = a - b ;
a *= b ;
a /= b ;
a %= b ; // 等价于 a = a % b ;
a &= b ; // 等价于 a = a & b ;
a |= b ;
a ^= b ;
a >>= b ;
a << = b ;
- 条件运算符 (三目运算符)
- 唯一一个拥有三个操作数的运算符
- 语法: 表达式1 ? 表达式2 : 表达式3
- 解析: 判断表达式1 是否为真 ? 如果是 取 表达式2的值 否则取表达式3
int a = 100 ;
int b = 200 ;
int max = (a>b) ? a : b ; // 如果a>b则取a 反之取b
// printf 会返回具体的输出字节数
int ret_val = a<b ? printf("GC2075\n") : printf("Even\n") ;
printf("%d\n" , ret_val);
- sizeof 运算符
- 用来计算数据类型或变量所占的内存空间大小(字节数)
- 语法: sizeof(类型) / sizeof(变量) , 如果计算的是变量 括号可以省略
int a = 1 , b = 99 ;
printf("int:%ld\n" , sizeof(int));
printf("a:%ld\n" , sizeof(a));
printf("b:%ld\n" , sizeof b );
- return 运算符
- 含义: 用来退出某个函数(主函数:直接退出程序。 子函数:退出子函数。)
- 语法要求:必须写在函数体内{ } , 可以携带函数的返回值
6.优先级
$ man operator