一、算数操作符
有哪些·?
+ - * % /
除了%外,其他操作符都可用于整数和浮点数
/:除法(得到的是商,以5除以2为例,得到的结果是2)(但是如果除数或者被除数添加小数点,则结果为2.5)
如图所示
tip:注意lf前是什么数字(%.n),就打印小数点后几位,无数字默认后六位 ,如图所示:
%:取模(得到的是余数,以5除2为例,得到的结果是1)
取模的话被除数和除数都必须是整数,无小数点
二、移位操作符(不可以移动负位数)(只可作用于整数)
有哪些?
<< (左移操作符) >>(右移操作符)
右移操作符
算术右移:右边丢弃,左边添加原符号位(正0负1)(通常都是算术右移)
逻辑右移:右边丢弃,左边添加0
小tip:整数的二进制表示有:源码、反码、补码
(正数的源码、反码、补码是一样的,但是负数由如下规则:源码符号位不变,之后的位都变为相反的,,再加一即为补码)如图所示
左移操作符
左边丢弃,右边加0
三、位操作符
&
&:按位与(位是二进制位)
试着将每一位做乘法,即同为1则1,否则为0。
|:按位或
对应的二进制位有1则为1
^:按位异或
同为0,异为1
练习:见vs
1、交换ab
2、打印出一个数的1的个数
四、赋值操作符(一个=,判断相等==)
首先明白一点:变量未存在叫初始化,已有叫赋值。
不建议连续赋值,如y+1=x=a,a赋值给x,x赋值给y+1;
建议这样写·,x=a y+1=x a赋值给x,x赋值给y+1。
1、复合赋值符
+= -= *= %= /= >>= <<= &= |= ^=
例:a=a+2 a+=2
a=a>>1 a>>=1
五、单目操作符
!(逻辑反操作符) +(正值) -(负值) &(取地址操作符) *(解引用操作符)
~(按位取反) ++ --
++使用规则
1、++a前置加加:先++,后使用
2、后置++:先使用,再加加
tip:1、0是正数,三码相同
2、补充内容:强制类型转换加() int a=(int)3.14
小测试:
打印结果:40,10,4,4
数组arr和ch传过去,指针大小为4或者8,而编译器是32的,所以是4
六、关系操作符(比较大小)
> < >= <= != ==
七、逻辑操作符
&&(逻辑与) ||(逻辑或)
&&:都为真为真。
||:一个为真就为真
八、条件操作符(三目操作符)
exp1?exp2:exp3
如果表达式1为真,就算表达式2的结果
如果表达式1为假,就算表达式3的结果
例子:求较大值
(a>b?a:b)
逗号表达式:exp1,exp2,exp3......expn
从左往右依次计算,整个表达式的结果是最后一个表达式的结果
以struct stu这个类型创建了s1一个学生变量
tip:字符串是用“”,而单个字符才用‘’
隐式类型转换
整型提升
C的整形计算是至少以缺省整形类型的精度来计算的
为了获得这个精度,会将短整型操作数和字符操作数变成普通型,这就是整形提升
按照变量数据类型的符号位提升的
算数转换
操作符属性
1、优先级
2、结合性