C语言操作符
C语言的操作符分为:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号操作符、下标引用,函数调用和结构成员。
一、算术操作符(双目)
+ - * / %
1.除了%,其他均可以作用于整数和浮点数
2./:两个都是整数,整数除法,如果结果有小数就省略(不会四舍五入),有浮点数就是浮点数除法
3.%要求两个操作数都是整数,返回整除后的余数 例如11.0%5是错误的,没有结果
4.*在字母与字母,数字与字母之间不能省略,不能将数学习惯带入编程
5.如果不了解优先级,将你想先算的部分加上括号
二、移位操作符(以二进制位)
1.<<左移操作符:左边抛弃、右边补零
2.>>右移操作符:分为两种 算术右移,右边抛弃,左边补原符号位(正数符号位是0,负数符号位是1)一般是算术右移。
逻辑右移,右边抛弃,左边补零
使用:
整数的二进制表示有原码、反码和补码,计算机以补码形式储存到内存。
正数原反补相同,用原码表示一个负数,符号位不变,其他位按位取反得到反码,反码+1得到补码(原码得到补码的快捷方法:从右到左,遇到的0不变,第一个1不变,这个1左边的所有位按位取反,但符号位不变)
⚠:对于移位运算符,不要移动负数位,是标准未定义的如
Num=10,num>>-1//error
三、位操作符(按二进制位)(双目)
& 按位与 | 按位或 ^按位异或
&有0则0,都1则1,负数用补码表示
| 有1则1,全0则0
^相同为0,相异为1
它们的操作数都是整数
四、赋值操作符=(双目)
可以在一条语句中连续赋值(不建议)
x=x+1在数学中是错误的,在编程中是正确的,它的意思是将x+1的结果赋值给x
五、复合操作符(双目)
+= -= *= /= %= >>= <<= &= |= ^=
例题 1<5+9<7结果为多少
<的结合方向是从左向右,5+9=14,1<14为真,左侧表达式结果为1,1<7结果为真,最后结果为1
六、单目操作符
!逻辑反操作 -负值 +正值 &取地址 sizeof操作数类型长度(以字节为单位) ~对一个数的二进制按位取反 --前置后置-- ++前置后置++ *间接访问操作符(解引用操作符) ()强制类型转换
最后s值不变,还是0,sizeof()里的式子不参与运算。
++a,先++,后使用,a++,先使用,后++,--同理
七、关系操作符(双目)
> >= < <= != ==(不要写成=)
八、逻辑操作符(双目)
&&逻辑与全真为真,有假为假 ||逻辑或有真为真,全假为假
九、条件操作符(三目)
exp1 ? exp2:exp3
如果exp1为真,表达式的结果为exp2的结果;如果exp1为假,表达式的结果为exp3的结果。
功能等同于if-else。
十、逗号操作符(双目)
用逗号隔开多个表达式,从左向右执行,前一个表达式会对后面的表达式产生影响,整个表达式的结果是最后一个表达式的结果(不能只算最后一个结果,最后的结果是整个表达式共同完成的)。
十一、下标引用、函数调用和结构成员(双目)
1.[]下标引用操作符 操作数:一个数组名+一个下标值
2.()函数调用操作符 一个或多个操作数:第一个操作数是函数名,剩余的操作数是传递给函数的参数。
3.访问一个结构的成员
. 结构体.成员名
-> 结构体指针->成员名
补充:1.注释 //注释该行。
/* */中间注释掉,可以多行,visual studio中有快捷键。
增加可读性,删除不需要的代码。
2.双目操作符两侧操作数类型要相同,不相同会有类型转换。
3.非零即为真,例如b=2是真。