一,操作符分类
算数操作符:+ - * / % %的两个操作数都是整数 % 和 / 的除数都不能为0
移位操作符:<< 左移操作符 >> 右移操作符
左移操作符:左边抛弃,右边补0 右移操作符:
逻辑移位:左边用0填充,右边抛弃(无符号数字)算数移位:左边用本值得符号位填充,右边抛弃(有符号数)对于移位运算符,不要移动负数位,这个标准未定义。位操作符: & 按位与 | 按位或 ^ 按位异或 & :有1为1 | :有0为0 ^ :相异为1,相同为0
对于按位异或操作符有以下几点性质:
异或运算符合交换律任何数与它本身异或都是0任何数和0异或都是它本身赋值操作符:= 复合赋值符:+= -= *= = %= >>= <<= &= |= ^=
C语言允许连续赋值:
int a=10; int x=0; int y=20; a=x=y+1;//连续赋值,编译能通过要改变一个变量的内容就要通过赋值语句
int a=10; a>>1;//未赋值,没有改变a的内容 a>>=1;//通过赋值改变了a的内容单目操作符
! 逻辑反操作符 取反结果为真(1),取反结果为假(0) + 正值 - 负值 & 取地址 sizeof 操作数类型长度(以字节为单位) 1, sizeof操作符计算的是变量(类型)所占空间的字节个数,sizeof(a+b)里面的表达式不会参与运算,若a,b为int型,则输出结果为4。 2, 数组传参是要发生降维,会降维为一个指向其内部元素类型的指针,次数用sieof(数组名)是无法算出数组大小的,只能算出一个指针的大小(4字节) ~ 对一个数的二进制按位整体取反 – 前置,后置- - ++ 前置,后置++ ** * 间接访问操作符** (类型) 强制类型转换
关系操作符
大于 < 小于 = 大于等于 <= 小于等于 != 不等于 == 等于
逻辑操作符
&& 逻辑与 一假则假:1&&0—0 || 逻辑或 一真则真:1||0----1
条件操作符(三目运算符) exp1?exp2:exp3
逗号操作 exp1,exp2,….exp 从左往右依次执行,整个表达式结果是最后一个表达式的结果
Int a=0; Int b=2; Int c=(a>b,a=b+10,b=a+1);//c=13下标引用,函数调用和结构成员
[ ]下标引用操作符 操作数为一个数组名加上一个索引值arr[9]=10; ( )函数调用操作符 接受一个或者多个操作数,函数名和传递的参数,text(n)
. 访问一个结构的成员
结构体.成员名 -> 结构体指针->成员名
