分类:算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号操作符,下标引用、函数调用和结构成员
算术操作符:+(加) -(减) *(乘) / (除) %(取模)
例如:5/2==2……1 //商2余1
int a = 5/2得a==2
int b = 5%2得b==1
注意:
1除了%之外,其他的都可以作用于整数和浮点数
2对于/来说,如果两个操作数都为整数,执行整数除法;只要有浮点数,执行的就是浮点数除法
3%的两个操作数必须是整数。返回得是整除后的余数
移位操作符:<<(左移操作符) >>(右移操作符)
注意:1移动的是二进制位
2不要移动负数位,标准未定义
3只能作用于整数
右移操作符分类:1算术右移 移位规则:右边丢弃,左边补原符号位,正数补0,负数补1
2逻辑右移 移位规则:右边丢弃,左边补0
如:
int a =16;
//a=0000 0000 0000 0000 0000 0000 0001 0000
int b = a>>1
//b=0000 0000 0000 0000 0000 0000 0000 1000
左移操作符移位规则:左边抛弃,右边补0
位操作符:&(按位与)|(按位或)^(按位异或)
注意:1位操作符的操作数必须是整数
2按二进制
&:全1才1
例如:
int a =3;
//3==0000 0000 0000 0000 0000 0000 0000 0011
int b =5
//5==0000 0000 0000 0000 0000 0000 0000 0101
int c = a&b
//c==0000 0000 0000 0000 0000 0000 0000 0001
|:有1就1
^:相同为0,相异为1
赋值操作符
复合赋值符:+= -= *= /= %= >>=
例如:
int a = 1;
a = a+1即a += 1
单目操作符:!(逻辑反操作)-(负值)+(正值)&(取地址)sizeof(操作数得类型长度,以字节为单位)~(对一个数的二进制位按位取反)--(前置、后置--)++(前置、后置++)*(间接访问操作符,即解引用操作符)(类型)(强制类型转换)
单目操作符即只有一个操作数
!:将假改为真,将真改为假
sizeof:sizeof( ),其中()中可以放变量和类型,放变量时括号可以省略
注意:括号里的算式不改变变量的值
~:按二进制位取反,将补码二进制位中得所有1变成0,将0变成1
前置++/--:先++/--,后使用
后置++/--:先使用,后++/--
(类型):强制转换类型
例如:int a = (int)3.14
逻辑操作符:&&(逻辑与)||(逻辑或)
&&:全真才1,有假就0
||:有真就1,全假则0
区分逻辑与 与按位与
int a = 1&2 即a = 0
int a =1&&2 即a = 1
区分逻辑或与按位或
int b =1|2 即b = 3
int b =1||2 即b = 1
条件操作符(三目操作符):exp1?exp2:exp3
规则:exp1为真时算exp2,为假时算exp3
逗号表达式:exp1,exp2,exp3.....,即用逗号隔开的多个表达式,逗号表达式从左到右依次执行,整个表达式的结果是最后一个表达式的结果
用逗号表达式:
while(a = get_val(),count_val(a),a>0)
{
}
下标引用、函数调用和结构成员:
下标引用操作符([ ]):操作数为:一个数组名+一个索引值
例如:int arr[10];//操作数为arr与10
arr[9] = 10;//实际运用下标引用操作符。操作数为arr与9
函数调用操作符(()):接受一个或多个操作数:第一个操作数是函数名,剩余的操作数是传递给函数的参数
例如:int max = get_max(a,b)
//调用函数时()就是函数调用操作符
访问一个结构的成员:.(结构体变量,成员名)->(结构体指针->成员名)