运算符讲解

1、运算符
单算移关与,异或逻条赋!                          从高到底排列

单目运算符,算术运算符,左移,右移,关系运算符,按位与,异或,按位或,逻辑运算符,条件运算符,赋值运算符

 算数运算符
+  -  *  /  %  ++  --

注意:%不能用于浮点数

++在前:先自加,在赋值

++在后:先赋值,在自加

注意:当a++或者++a,单独成立一条语句时,都相当于给a+1

1.关系运算符

>  <  >=  <=  ==  !=

关系运算符:比较的结果是真或假

注意:0 < a <5//error

注意!!等号的书写

常量写在等号的左边

(如果判断相等时少写了一个=,会报错)

1.3 逻辑运算符
&&  ||  !

&&:表达式1&&表达式2

截断法则:有一个为假,结果就为假,前一个为假,后面就不再进行运算了!

||:表达式1||表达式2

截断法则:有一个为真,结果就为真,前一个为真,后面就不在进行运算了!

!: !0 为1

1.4 sizeof运算符
Sizeof(变量名)或sizeof(数据类型)

1.5 三目运算符
表达式1?表达式2:表达式3

注意:

判断表达式1,是否成立,如果成立,就将表达式2的值作为整个表达式的值,否则,就将表达式3的值作为整个表达式的值

1.6 逗号运算符
表达式1,表达式2,表达式3,。。。。。。表达式n

从左往右依次计算每个表达式的值,将表达式n的值作为整个表达式的值

(注意:必须依次计算,以防止前面的表达式改变了表达式n中的变量的值)

注意:逗号运算符的优先级是最低的,因此在使用的时候,要加上括号

1.7 位运算符
&  |  ~  <<  >>  ^

1.7.1 &运算符

都为1,才为1,有一个为0,就为0

1000 0010

& 1100 1111

  1000 0010

案例:将1101 0011的0-2位进行清零

1101 0011

&   1111 1000      (~7)

1101 0000

101010100101010100111    0-2位进行清零

111111111111111111000 == ~( 0000000000111) = = ~7

1.7.2 |运算符

都为0 ,才为0,有一个为1,就是1

1000 0010

|   1100 1111

1100 1111

案例:将1101  0101的3~5位 置为101

清零3-5 &  1100  0111   ~(111000)   &(~56)

        11 000 101

     |  00 101 000

        11 101 101

101010100101010100111  3-5 置为101

置零(3-5) &111111111111111 000111   ~(000000000111000)  = =(~56)
置为101    | 000000000000000 101 000
             

1.7.3 取反~

0变1,1变0

~(1001 0101)= = 0110 1010

1.7.4 异或^

相同为0,不同为1

1000 0010

^   1100 1111

0100 1101

1.7.5 左移

Unsigned: 只有正数

没有符号位

1<< 2

1--->0000 0001  

高位丢弃,低位补0

补零:0000 0100  : 4

Signed:-1<<2

原码:1000 0001

反码:1111 1110

补码:1111 1111

符号位不变,高位丢弃,低位补0

补0:1111  1100  

反码:1000 0011

原码:1000 0100 :-4

1.7.6 右移

Unsigned:只有正数

没有符号位

>2
低位丢弃,高位补0

0000 0100

补零:0000 0001 :1

Signed: 正数+负数

有符号位

-4 >>2

符号位不变,低位丢弃,高位补1

-4 的原码:1000 0100

      反码:1111 1011

补码:1111 1100

补1:  1111 1111     1000 0000+1  = 1000 0001   = -1
 

你可能感兴趣的:(C语言,c语言)