一、算数运算符
+加 -减 *乘 /除 %取模
1.除法运算:若两个操作数都为整数则进行整数除法,若两个操作数有一个为浮点数则进行浮点数除法。
2.取模操作符的两个操作数都必须为整数。
二、移位操作符
<<左移 >>右移
1.<<左移:移动二进制序列,向左移动,左边遗弃,右边补0
2.>>右移:①算数右移:移动二进制序列,向右移动,右边遗弃,左边用原该值的符号位补充
②逻辑右移:移动二进制序列,向右移动,右边遗弃,左边补0
注:①计算机里存放的是数字的补码
正数的原码,反码,补码都一样。
00000000000000000000000000000001--数字1
负数则不同:例如-1
10000000000000000000000000000001--原码
11111111111111111111111111111110--反码(原码按位取反就是反码)
11111111111111111111111111111111--补码(反码加1就是补码)
②对于移位操作符,不要移动负数位
三、位操作符
&按位与 | 按位或 ^按位异或
1.&按位与:按二进制位与,对应的二进制位有一个为0就是0
2.| 按位或:按二进制位或,对应的二进制位有一个为1就是1
3.^按位异或:按二进制位异或,对应的二进制位相同为0,相异为1
四、赋值操作符
=等于:可连续使用
五、符合赋值符
+= -= *= /= <<= >>= %= &= |= ^=
a=a+3 ==> a+=3(这样写更加便捷)
六、单目运算符
!逻辑反操作 -负值 +正值 &取地址 sizeof操作数的类型长度
~按位取反 --自减 ++自加 *解引用操作符 (类型)强制类型转换
1.sizeof①表达式里面的表达式不进行计算
②int arr[10]--->sizeof(arr)=sizeof(int [10])=10(数组也有类型)
2.++a:先增加,再运算 a++:先运算,再增加(--相同)
3.强制类型转换:int a=(int)3.14;
七、关系运算符
>大于 <小于 >=大于等于 <=小于等于 !=判断不等于 ==判断等于
//需要注意在判断等于时是两个等号。
八、逻辑操作符
1.&&逻辑与
有一个为假,结果为假(如:1&&2-->1 0&&2-->0)
2.|| 逻辑或
有一个为真,结果为真(如:1||2-->1 0||2-->1)
九、条件操作符
exp1 ? exp2 : exp3
当exp1为真,结果为exp2;当exp1为假,结果为exp3
十、逗号表达式
exp1,exp2,exp3,......,expN
逗号表达式就是用逗号隔开多个表达式,从左向右依次执行,但整个表达式的结果是最后一个表达式的结果。
十一、下标引用、函数调用和结构成员
1.下标引用 []
操作数:一个数组名+一个索引值(如:int arr[10])
2.函数调用操作符()
括号()里的操作数为传递给函数的参数
3.结构成员---> . 结构体 ->结构体指针( (*p).name 相当于 p->name )
- 定义一个学生类型struct Stu(没有占据内存空间)。
- Stu为结构体标签。
- struct Stu s(这里的s为结构体变量)。
- 通过struct Stu这个类型创建s变量的这个过程叫做实例化。
- 若想要给结构体里的成员赋值我们可以采用以下方法:
strcpy(s.name,“李四”);strcpy(s.sex,“男”);
s.age=20;(整型变量可以直接放进去)
- 结构体成员的访问-->s.name s.age s.sex