C语言的操作符有很多种,也很重要,可分为以下几类:
1.算术操作符:+ - * / %
除法中:俩个整形相除结果也等于整形;含有浮点型的除法中结果也为浮点型。
% :模运算只能用于整数,因为有小数点时,为浮点数运算,浮点数除法中不存在小数。
int main()
{
int a = 3;
int b = 2;
printf("%d",3/2);//结果为1,不是1.5
printf("%d",3.0/2);结果为1.5
return 0;
}
2.移位操作符:>> <<
左移<< 左边直接抛弃,右边补0 001 << 2 = 100
右移>> 算术右移:右边抛弃,左边补符号位;逻辑右移: 直接补0;
【注意】移位不能用于负数。
一个整数右移相当于这个整数除2;
num>>1==num/2 所以除2的时候可以用右移代替;
0x40000000 << 1 = -2的31次方
左移n位,相当于num乘以2的n次方。
3.位操作符:& | ^
位操作符在C中很少出现,但很重要;
& 按位与 1&0=0 1&1=1;
特点:某一位与上1为它本身,所以&可以用来取出二进制中的某位;
| 按位或 1|0=1
^ 按位异或 1^0=1 1^1=0 0^0=0
特点 设:a^b==c; c^b==a; c^a==b; 三个数直接异或存在自反性(自己理解)
3.赋值操作符:=
复合赋值操作符: += -= *= /= >= <= == !=
num+=1; num=num+1;
num-=1; num=num-1;
4.单目操作符: ! - + & sizeof ~ -- ++ * (类型)
!:逻辑反操作,真变为假,假变为真;
&:取地址符
int num = 20
int arr[10] = {0};
printf("%p\n",&num);
printf("%p\n",arr);//arr表示数组首元素的地址
printf("%p\n"arr[0]);//首元素地址
printf("%p\n",&arr);//这里arr表示整个数组,对整个数组取地址为首元素地址
sizeof:计算长度
sizeof (int);
sizeof (num);
sizeof num;以上3种表示方法都可以,但不能表示为
siozeof int;
~ :二进制按位取反
* :解引用
int *p = #
*p = 20;
(类型):强制类型转换
5.关系操作符: > < >= <= == !=
== :等于 注意与赋值=区分
防止写错可以写为
if(5==i)
6.逻辑操作符: && ||
&& :逻辑与 1&&1为真 当&&左边为0时,右边将不再计算
|| :逻辑或 1||0为真 当||左边为1时,右边将不再计算
7.条件操作符: exp?exp1:exp2
如果条件exp成立返回1,否则返回2;