cat demo2.c和 tail demo.c 都是查看demo.c的意思
关系运算符
逻辑运算符
v7 位运算
%x代表十六进制,#代表是自动添加0x前缀
在一个代码中,给一个数字取反,实际上是把十六进制转换成二进制,再转换成十六进制。
x=0126,y=0xac
x=0000 0001 0010 0110
y= 0000 0000 1010 1100
z=x&y 0000 0000 0000 0100
z=0x04 或者写成0x4也可以,都是一样的
异或运算
位移运算符的注意事项:
a=0000 0000 1110 0100 b=a << 3(这个地方给的就是两位的16进制,不需要在前面加8个0)
0000 0111 0010 0000 ×
a=1110 0100 ,b=a << 3
b= 0010 0000 b=0x20
v8
思考题:
如何把一个无符号数的某位快速置1?通过或运算
如何把一个无符号数的某位快速清0?通过与运算
如何利用位运算把十进制的数转换成十六进制?取余。
第几位要清零?就把那一位置0,其他的置1
比如把十六进制,0x14的第三位清零,则下面与上的那个数第三位要置0,其他的全部都是1
下面与上的那个数是怎么来的呢?通过y的数变出来的,比如我们可以通过y=2,变化一下再与x相与。
a / 16 就是把数
左移1位,*2,左移2位*4,右移4位,/16
v9 运算符
赋值运算符
特殊运算符
1、三目运算符
x=70,x++,先判断x是多少,再自增
2.逗号运算符 执行顺序是从左到右,逗号表达式的值取最右边一个
sizeof运算符 sizeof(),这个括号里可以加类型也可以加变量名,具体见如下代码。
运算符的优先级
运算符的优先级
x ++ && y++ || ++z
x+=y==z,y=x+2,z=x+y+x>0这个地方有两种理解,
一种是把x+=y==z,y=x+2,z=x+y+x>0
另一种是x+=y==z,y=x+2,z=x+y+x>0
x+=y==z,y=x+2,z=x+y+x>0
第一个式子: x+=y==z,(==的优先级高于+=),因此先算y==z,为1,x+=1,x=x+1=2
第二个式子: y=x+2,y=4
第三个式子:先算x+y+x,是8>0, 因此z=1