前言:大家好,这里是YY;此篇博客主要是操作符的知识点;包含【算术操作符】【负数的原反补码】【进制位的表示】【移位操作符】【位操作符】【赋值操作符】【逻辑操作符】【单目操作符】【其他操作符】【隐式类型转换】【问题表达式】【逗号表达式】
PS:创作不易,每个知识点都有例题或者图帮助理解;如果对你有帮助,希望能够得到您的关注,赞,收藏,谢谢!
+ - * / %
(5.0/2——>2.5)
~:二进制位0变1,1变0
00000000000000000000000000000001
11111111111111111111111111111110 按位取反后
原理:
例子:
进制位的表示范围都为(0~进制位-1) 例:10进制位(0~9) 8进制位(0~7)
进制位从右往左,分别代表进制位的数×进制位的0到若干次方
例:二进制表示15
PS:涉及原反补码的运算,不清楚+1-1的可以看本博客原反补码块知识点
图示:
图示:
1.按位与&:有0为0,全1为1 2.按位或 |:有1为1,全0为0 3.按位异或^:相同为0,相异为1
原理:
int main()
{
int a=10;
int b=20;
//二进制层面,每一位只有0/1两种可能
a=a^b; 此时,a相当于在二进制层面上,原来ab两数二进制各位的集合
b=a^b; 根据相同数亦或为0,b中存储的是集合排除掉b后的结果,即本来的a
a=a^b; 根据相同数亦或为0,此时存储的是集合排除掉本来的a后的结果,即b
}
原理:按位与&1,按位右移。统计32次后按位与1结果之和
代码演示:
int main()
{
int count=0;
for(int i=0;i<32;i++)
{
if((n>>1)&1)==1)
{
count++;
}
}
return 0;
}
原理:
操作规范:
特性:sizeof内部操作不改变原值
PS:截断过程
():接受一个或多个操作数:第一个操作数是函数名,其余的操作数就是传递给函数的参数
演示:
演示:
方法:高位补符号位
原理:优先级虽然存在,但与执行的次序存在不确定性
例1:无法判断三个fun( )哪个先执行
例2:无法判断是c开始先去+"--c",还是先执行--c再+c
优化前:
a=get_val();
count_val(a);
while(a>0)
{
业务处理
a=get_val();
count_val(a);
}
优化后:
a=get_val();
count_val(a);
while(a=get_val(),count_val(a),a>0)
{
业务处理
}