C语言学习总结:操作符

C语言中有各种各样的操作符。那些操作符可分为这几类:算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符和逗号表达式。

 算数操作符

     +     -       *        /         %

1. +,-,*,/  这几个操作符可以作用于整数和浮点数。

2. % 表示除余运算,只能作用于整数,结果是整除之后的余数。

移位操作符

    <<          >>

1. << 左移操作符

左边抛弃,右边补零

例:int num = 10;

       num<<1;


上图为num在内存中的二进制和左移后的结果。最左边的0左移后被丢弃,右边补一个0。int型存32字节,所以最左边的0只能被丢弃,丢弃以后不能再被找回。现在num由10变成了20,所以左移一位由乘2的效果。以此类推,若左移n位,就有乘2^n的效果。

2. >> 右移操作符

分为两种:逻辑移位:左边用0填充,右边丢弃

                 算术移位:左边用原该值的符号位填充,右边丢弃

注意:内存中存储的二进制是补码,正数的原码与补码相同,负数的原码与补码不同。

           注意负数之间原码与补码的计算。

           对于移位运算符不要移动负数位,这个是标准未定义的。

位操作符

&        |           ^

1. & 按位与:全1为1,其余为0

2. | 按位或:全0为0,其余为1

3. ^ 按位异或:相同为0,不同为1

 例:

      

这三个操作符的操作数都必须是整数。

运算过程是这样的:它们先自动在计算机里转化为二进制,然后每位进行与,或,异或运算,再自动转化为十进制,打印出来。

赋值操作符

=     +=     -=     *=     /=     %=     >>=     <<=     &=     |=     ^=

这些运算符都可以写成复合的效果。

例:  int x = 20;

        x = x + 20;

       x += 20;  //复合赋值

单目操作符

!      -      +      &     sizeof     ~      --      ++     *       (类型)

1. ! 逻辑反操作

例:printf("%d\n",!2);

打印结果为0

零代表假,非零代表真,所以2代表的是真,非2自然为假,输出0。

2. - 负值

3. + 正值

4. & 取地址:可用于scanf语句中,也会在指针运算中用到。

5. sizeof 操作数的类型长度(以字节为单位)

例:

     

sizeof可以求变量所占空间的大小,也可以求类型所占空间的大小,但注意,类型一定要加括号。

6. ~ 对一个数的二进制按位取反

7. -- 前置--,后置--

8. ++ 前置++,后置++

9. * 间接访问操作符(解引用操作符):用于指针

10. (类型) 强制类型转换

关系操作符

>     >=     <      <=     !=      ==

这些运算符都较为简单。分别为大于,大于等于,小于,小于等于,不等于和等于。

注意:赋值运算符与等于的区别。

逻辑操作符

&&       ||

1. && 逻辑与:两个均为真则为真,其余为假

2. || 逻辑或:一个为假则为假,其余为真

区分逻辑与和按位与,逻辑或和按位或

1&2---------->0

1&&2-------->1

1|2----------->3

1||2---------->1

条件操作符

exp1 ? exp2 : exp3

若exp1成立,则执行exp2;反之,则执行exp3。

例:

    

   

逗号表达式

exp1,exp2,exp3,……expN

从左向右依次执行,整个表达式的结果是最后一个表达式的结果。

例:

      



猜你喜欢

转载自blog.csdn.net/baidu_40931662/article/details/80283509