您的位置:首页 > 编程语言 > C语言/C++

C语言操作符 小结

giraffe_255 2017-10-19 01:18 35 查看
刚接触C语言操作符时候,感觉挺容易的,越学越感觉难,里面学问挺多的。

1.算数操作符:+ - * / %

   % 必须两边同为整数

    /  左右两边有一个为浮点数,则商为浮点数

 

2.移位操作符

  1).左移操作符  <<

        左边抛弃,右边补0;//   000000001

                  (左0抛弃)    //  0|000000010   (右边补0)

2).右移操作符    >>

       1,算数移位

           左边 :补符号位 (正数 > 0;负数 > 1);右边,丢弃

        2,逻辑移位

          左边补0;右边丢弃

     

、补充:   关于 “原码”  “反码”   “补码”

                 正数: “原码”  “反码”   “补码”均相等

                 负数:“原码” 为该数的二进制序列

                            “反码” 符号位为“1”,其余部分,按位取反

                            “补码” 符号位为“1”,其余部分,按位取反,而后+1;即 “反码” +1

 3.位操作符(移位操作符 结合使用)

   1).

          &    按位与       有0为0,全1为1

           |    按位或        有1为1,全0为0

           ^   按位异或     相同为0,相异为1

eg:   int a = 1; // 001

        int b = 2; // 010

        a&b;        // 000

        a|b;         // 011

        a^b;        // 011

 

4.赋值操作符

5.复合操作符

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

eg:  a>>=1   即  a=a>>1

6.单目操作符

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

   1),“!” 逻辑反操作     假变真,真变假

   2),“ & ”取地址      int a= 0;    &a;

   3),“sizeof” 操作数的类型长度  以字节为单位  sizeof(int) = 4  ;  sizeof(char) = 1;

   4),“~” 对一个数的二进制 按位取反

eg: 0//00000000        0 的 原码,补码,反码

        //11111111        (~0的)补码      

        //11111110        (~0的)反码   补码  =  反码  +  1,即,反码  =  补码  -  1

    ~0//10000001  (-1)

     5),“++”  前置++,先++再运算,后置++,先运算再++

     6),强制转换类型 

eg : int a = 0;

       a = (int)3.14   

     !!!  括号在类型上,强制转换类型,会导致数字精度缺失

7.关系操作符

   >  >=  <  <=  !=  ==

8.逻辑操作符

  &&     逻辑与    一个假为假,两个真为真

   ||       逻辑或    一个真为真,两个假为假

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

eg : 1&2      0

       1&&2   1

        1 | 2    3

       1 || 2    1

注:在程序运行过程中,“&&”若前面有0,后面则不再运算,直接取0(假);  “||”若前面有非0,后面则不再运算,直接取1(真)

9.条件操作符

   exp1 ? exp2 : exp3

eg:  if (a>5)

           b=3;

       else

           b=-3;

转换为:  b=a>5?3:-3

10.逗号表达式

    表达式: 值属性&类型属性

    从左至右依次执行,结果为最后一个表达式结果

11.下标引用、函数调用 和 结构成员

     1).[ ]    操作数:一个数组名+一个索引值

                                  arr[5]=5;  *(arr+5)=5;  arr+5 : 下标为5,元素地址

                                  arr 的两个操作数是 arr 和 5  , 缺一不可

     2).()函数调用操作符

             函数名 是 一个地址 

             eg:Add(a,b)   ()有三个操作数  ,函数至少有一个操作数:函数名

     3).访问一个结构的成员

       .  结构体  .  成员名                s.age=20;   strcpy(s.name,"小强");

      -> 结构体指针  -> 成员名       p->age=20;strcpy(p->name,"小强");

     


标签: