一.算术操作符
+ - * / %
注: 1.% 操作符只可用于整数与整数,返回值为两数的余数。
2. / 操作符,若两数均为整型,执行整型除操作,若有一数为浮点数,则执行浮点除操作。
二.移位操作符(基本单位为bit位)
将数据看成二进制数,对其进行向左或向右移动若干位的运算。移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。
<<左移操作符
>>右移操作符
1.<<左移操作符规则:
左边抛弃,右边补0。
2.>>右移操作符规则(在c语言中用算术移位即可):
A.逻辑移位:右边抛弃,左边补0。
B.算术移位:右边抛弃,左边补原值符号位。
3.注意点:
A.num<<3 num不变
num = num << 3 才会改变num的值
B.左右移可以做快速乘除2运算。
三.位操作符
& 按位与
| 按位或
^ 按位异或
注:操作对象为整型。
#include<stdio.h>
#include<Windows.h>
int main()
{
int a = 1;
int b = 2;
printf("%d\n", a&b);
printf("%d\n", a|b);
printf("%d\n", a^b);
printf("%d\n", ~a);
system("pause");
return 0;
}
实例:使用异或交换两个数的值
#include<stdio.h>
#include<Windows.h>
int main()
{
int a = 1;
int b = 2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
system("pause");
return 0;
}
四.赋值操作符
=
复合赋值符:+= -= *= /= %= &= |= ^= <<= >>=
注:x = y = z + 1 ; 可拆分为y = z + 1 ; x = y ;
五.单目操作符
1.! 逻辑非
2.+ 正值
3.- 负值
4.& 取地址
5.++ 自增
6.-- 自减
7.* 解引用
8.(类型) 强转
9.sizeof 数据长度(以字节为单位)
注:sizeof 不可以在子函数中求原数组大小,因为传入为数组指针,大小为4字节。
六.关系运算符
< > <= >= != ==
七.逻辑操作符
&& 逻辑与
|| 逻辑或
八.条件操作符
exp1 ? exp2 : exp3
例:
a = a > 5 ? a+b : a-b;
等价于
if(a > 5)
a += b;
else
a -= b;
九.逗号表达式
用逗号隔开的多个表达式,从左到右依次执行,结果为最后一个表达式结果
1. int c = (a > b, a = b + 10, a + b);
2.if (a > b, a = b + 1, b > 0);
十.操作符优先级