位操作符:
& 按位与
int a=3;
int b=5;
int c=a&b;
//a:000000000000000000000011
//b:000000000000000000000101
//c:000000000000000000000001
| 按位或
int a=3;
int b=5;
int c=a|b;
//a:000000000000000000000011
//b:000000000000000000000101
//c:000000000000000000000111
^ 按位异或
int a=3;
int b=5;
int c=a&b;
//a:000000000000000000000011
//b:000000000000000000000101
//c:000000000000000000000110
//相同为零,相异为一
复合赋值操作符:
+= , -=:
*= , /=:
%= , >>=:
<<= , &=:
|= , ^=:
以上几种复合赋值操作符的意思即:
int a=3;
int b=5;
a=a+b;
a+=b;
单目操作符:
(类型) | 强制类型转换 |
! | 逻辑反操作 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
-- | 前置,后置-- |
++ | 前置,后置++ |
* | 间接访问操作符(解引用操作符)——指针变量 |
(在c语言中一般1就是真,但真不一定为1,0为假)
跟强制类型转换有关的讲解:
int a=(int)3.14
//3.14为双浮点型应使用double,在此通过强制类型转换,将其转换为整型
跟指针变量有关讲解:
int main()
{
int a=3;
int* p=&a;
*p=20;
printf("%d\n",a);//a=20
return 0;
}
跟sizeof计算有关讲解:
#include<stdio.h>
int main()
{
int a = 10;
char c = 'r';
char* p = &c;
int arr[10] = { 0 };
char ch[10]={0};
printf("%d\n", sizeof a);//4
printf("%d\n", sizeof(int));//4
printf("%d\n", sizeof c);//1
printf("%d\n", sizeof(char));//1
printf("%d\n", sizeof(arr));//4*10=40
printf("%d\n", sizeof(int[10]));40
printf("%d\n",sizeof(ch));//1*10=10
return 0;
}
跟~按位取反有关讲解:
int main()
{
int a=0;
printf("%d\n",~a)
return 0;
}
//在此处~按二进制按位取反
//a:00000000000000000000000000000000
//11111111111111111111111111111111——就是~a的补码
//反码加一等于补码
//11111111111111111111111111111110——就是反码
//10000000000000000000000000000001——这就是~a的原码
//所以~a打印出来为-1
跟++有关的讲解:
int a=10;
printf("%d\n",++a);//前置++,先++,后使用,打印结果为11
printf("%d\n",a);//打印结果为11
int c=12;
printf("%d\n",c++);//后置++,先使用,后++,打印结果为12
printf("%d\n",c);//打印结果为13