操作符
-
算数操作符
+ - * / %
加 减 乘 除 求余
- %操作符的两个数必须为整数,返回的是整除之后的余数
- /操作符,只要有浮点数执行的就是浮点数除法
- n/0,n%0 都不行会编译报错,0/n,0%n 结果都为0
-
移位操作符
<< 左移操作符
>> 右移操作符
- 移位操作符是对二进制数进行操作,因为计算机内数据都是以二进制的形式进行存储。
- 左移一位相当于*2,右移一位相当于/2
- 右移
- 逻辑右移:最左侧(最高位)就补0;
- 算术右移:最左侧补符号位;
- 对于移位操作符,不要移动负数位;例:10>>-1;//error,这个是标准未定义的
-
位操作符
- & 按位与:如果两个操作数都为1,结果为1,否则为0;
- | 按位或:如果两个操作数都为0,结果为0,否则为1;
- ^ 按位异或:如果两个操作数相同,结果为0,相异结果为1;
- ~ 按位取反:如果遇到0则变为1,如果遇到1则变为0;
-
赋值操作符
初始化和赋值两者不同;(常量不可以赋值,{}不可以赋值)
例:int num = 10; // 初始化
num = 20; // 赋值
-
单目操作符 (只有一个操作数的操作符)
- ! 逻辑反操作(非真及假)
- - 负值
- + 正值
- & 取地址
- sizeof 操作数的类型长度(以字节为单位),可以求变量(类型)所占空间大小
- ~ 对一个数的二进制按位取反
- -- 前置,后置--
- ++ 前置,后置++
- * 间接访问操作符(解引用操作符)
- (类型) 强制类型转换
-
逻辑操作符
&& 逻辑与:如果两侧的表达式都为真,结果为真,否则为假
|| 逻辑或:如果两侧的表达式都为假,结果为假,否则为真
对于逻辑与&&操作符来说,如果左侧的表达式为假,那么右侧的表达式不再求值
对于逻辑或||操作符来说,如果左侧的表达式为真,那么右侧的表达式不再求值
位操作符与逻辑操作符的区别:
- 1 & 2 --> 0 , 1 && 2 --> 1;
- 1 | 2 --> 3, 1 || 2 --> 1;
位操作符将数字转化为二进制进行操作;
-
条件操作符(3目运算符,优先级最低)
exp1(条件) ?exp2 : exp3
例:x > y ? x : y ; //若x>y成立则输出x,不成立输出y。
-
逗号操作符
逗号表达式,就是用逗号隔开的多个表达式。逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
例: int a=1;
int b = 2;
int c = (a > b,a=b+10,a,b=a+1); //逗号表达式
结果为 c = 13;
-
下标引用,函数调用和结构成员
- []下标引用操作符
操作数:数组名 + 下标值
例:int arr[10]; //创建数组
arr[9] = 10; //使用下标引用操作符
[ ]的两个操作数是arr和9.
- ()函数调用操作符
- 访问一个结构的成员
. 结构体.成员名
-> 结构体指针->成员名