1.操作符的分类
2.移位操作符
3.位操作符
4.单目操作符
5.逗号表达式
6.下标访问,函数调用操作符
7.结构体成员访问操作符
一.操作符的分类
二.移位操作符
2.1 左移操作符(<<)
移位规则:左边抛弃,右边补0
如上,则是对15的左移(这里涉及到的进制转化和源码,反码,补码请参考详解操作符(二))
2.2 右移操作符(>>)
移位规则:2.2.1 逻辑右移:左边用0填充,右边丢弃
2.2.2 算数右移:左边用该值的符号位填充,右弃
注:上述两种运算方式,在C语言中并没有详细敲定,但一般编译器上采用的还是算术右移
例:(计算中一般采用补码的形式,具体优点参见详解操作符(二))
警告⚠️:对于移位运算符,不要移动负数位,这个是标准未定义的。
例如:
int num = 10 ;
num>> -1 ; //error
如下:
三.位操作符
3.1 位操作符的分类
3.1.1 按位与(&)
定义:对两个二进制数的每一位进行与运算,只当两个相应的位都为1时,结果位才为1,否则为0
特点:常用于清零特定位、保留公共位等操作
3.1.2. 按位或(|)
定义:对两个二进制数的每一位进行或运算,只要两个相应的位中有一个为1,结果位就为1。
特点:常用于设置特定位、合并两个数的特定位等操作
3.1.3 按位异或(^)
定义:对两个二进制数的每一位进行异或运算,当两个相应的位不相同时,结果位为1;相同时,结果位为0。
特点:常用于翻转特定位、实现无进位加法等操作。异或运算还具有交换律和结合律,可以用于不借助临时变量交换两个数的值
3.1.4 按位取反(~)
定义:对一个二进制数的每一位进行取反运算,即0变为1,1变为0
特点:通常用于无符号整数,对于有符号整数,取反可能会导致符号位的改变,从而影响数的正负。
四.单目操作符
1.逻辑反操作符:例如,int flag = 5; if (!flag) { ... },如果flag为真(非0),则条件为假。
2.负值操作符:例如,int num = -5;,将5变为-5。
3.正值操作符:例如,int num = +5;,确保num为5。
4.取地址操作符:例如,int a = 10; int *p = &a;,p存储了a的地址
5.sizeof操作符:例如,printf("%d ", sizeof(int));,输出int类型的大小
6.按位取反操作符:例如,int num = \~5;,对5的二进制表示进行按位取反
7.自增操作符:例如,int num = 5; num++;,num变为6
8.自减操作符:例如,int num = 5; num--;,num变为4
ps: "++"和"--”
二者 分为前置++和后置++;前置--和后置--, 使用规则是 前置++先+1后使用,后置++先使用后+1, (前置--和后置--与前置++和后置++使用规则一样)
9.间接访问操作符:例如,int *p = &a; *p = 20;,通过指针p修改a的值
10.强制类型转换操作符:例如,int num = (int)3.14;,将3.14转换为整数3
五.逗号表达式
5.1 简而言之,逗号表达式就是用逗号隔开的多个表达式
5.2 过程:从左向右依次执行计算,整个表达式的结果取决于最后一个表达式的结果
例:
六.下标访问和函数调用操作符
6.1 下标访问操作符:其语法形式为数组名[索引值],用于访问数组中的特定元素。例如,arr表示访问数组arr的第10个元素
6.3 函数调用操作符:其语法形式为函数名(参数列表),用于调用函数并传递参数。例如,test()表示调用无参数的test函数,test(3, 5)表示调用有参数的test函数,传递两个参数3和5
七.结构体成员访问操作符
结构体访问操作符主要包括点操作符(.)和箭头操作符(->)
7.1 结构体成员的直接访问
结构体成员的直接访问是通过点操作符(.)进行的。点操作符接受两个操作数,第一个操作数是结构体变量,第二个操作数是结构体中的成员变量,例如:
7.2 结构体成员的间接访问
有时候我们得到的不是一个结构体变量,而是一个指向结构体的指针。这时,我们使用箭头操作符(->)来访问结构体的成员,例如:
ok,这就是最基础的操作符的介绍
标签:例如,num,访问,int,++,详解,操作符 From: https://blog.csdn.net/2403_87691282/article/details/143590882