操作符详解
右移到底是采用算术右移还是逻辑右移是取决于编译器的,编译器通常是采用算术右移
不可以移动负数位(比如:让A右移负3位就不行)
计算机里的运算都是用的补码!!!
&(按位与)和&&(逻辑与)区分
|(按位或)和||(逻辑或)区分
&(对应的二进制位两个都是1,才是1;有零则为0)
|(对应的二进制位只要有1,就是1;两个同时为0,才是0)
^(对应的二进制位相同为0,不同为1)
操作符的特点:
a^a=0
0^a=a
^是支持交换律的(即a^b^c和a^c^b的结果相同)
n&(n-1)之后可以把n的二进制位的最右边的1变成0
原码,反码,补码都是32位的二进制数
a&b时&是按位与
&a时&是取地址
函数调用操作符最少有1个操作数
相邻操作符,优先级高的先执行
相邻操作符优先级相同的情况下,结合性说了算
char类型的取值范围是:-128~127
算数转换:讨论的是类型大于等于整形类型的那些类型
关系运算符也是左结合
a+=1的记忆方法:把左边的用小括号阔起来移到后边的最左边,右边算出来的值就是a
右结合:运算是从右到左看整体
也可以比如:a/=2
变量的名字仅仅是给程序员看的,编译器不看名字,编译器是通过地址找内存单元的
地址也是16进制的
a*b时是乘法
a时 a是指针变量, *是解引用操作符