一,单目操作符(续)
1~:对一个二进制数按位取反,例如~1010是0101
原码,反码与补码:原码的 符号位不变,其他位均按位取反得到的就是反码,反码加 一得到的是补码;负数再内存中存储的时候,存的是二进制补码形式,而打印使用的是二进制的原码
如果是有符号数:二进制最高位是1,则为负数,二进制最高位为0,则为正数。
对于~0是-1的解释:int 0,是4个字节
int 0的二进制序列:00000000000000000000000000000000
按位取反:11111111111111111111111111111111(得到的补码,且最前面一个符号位)
反码:11111111111111111111111111111110
原码:10000000000000000000000000000001
故结果为-1
2++与--:b=a++,是先把a的值给b,之后a再+1;b=++a,先对a进行+1,再赋值给b
b=a--,是先把a的值给b,之后a再-1;b=--a,先对a进行-1,再赋值给b
3(数据类型),强制将原来数据类型转化为括号内的数据类型
二,关系操作符:
三,逻辑操作符:
1:逻辑与(&&)c=a&&b,如果ab均为非零(均为真)则c为真(1),否则为0
2:逻辑或(||)c=a||b,如果ab中有非零(至少有一个为真)则c为真(1)
四,条件操作符
exp1?exp2:exp3:如果表达式exp1为真则执行exp2,并且是整个表达式结果,如果exp1为假则执行exp3,并且是整个表达式结果
图中一个是if条件语句写的,另一个是用条件操作符写的
五,逗号表达式:
有逗号隔开的一串表达式
exp1,exp2,exp3……expn
六,其他
下标引用:[]
函数引用:()