(C)操作符 小结

写在前面的话:
  刚接触C语言操作符时候,感觉挺容易的,越学越感觉难,感觉里面学问挺多的。


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

       %     //必须两边同为整数

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

2.移位操作符

 //1)左移操作符  <<
         左边抛弃,右边补0//   000000001
        (左0抛弃)    //  0|000000010   (右边补0)

 // 2)右移操作符  >>
        1,算数移位
            左边 :补符号位 (正数 > 0;负数 > 1);右边,丢弃
        2,逻辑移位
            左边补0;右边丢弃

//补充: 关于 “原码”  “反码”   “补码”
        正数: “原码”  “反码”   “补码”均相等
        负数:“原码” 为该数的二进制序列
        “反码” 符号位为“1”,其余部分,按位取反
        “补码” 符号位为“1”,其余部分,按位取反,而后+1;即 “反码” +1

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

1)
    & 按位与   有00,全11 
    | 按位或   有11,全00
    ^ 按位异或  相同为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 的两个操作数是 arr 和 5  , 缺一不可
2).
    ()函数调用操作符
     函数名 是 一个地址  
     eg:
         Add(a,b);   
         //()有三个操作数,函数至少有一个操作数:函数名
3).
    .访问一个结构的成员
    .  结构体  
        s.age=20;   
        strcpy(s.name,"小强");
    -> 结构体指针
    -> 成员名      
        p->age=20;
        strcpy(p->name,"小强");

猜你喜欢

转载自blog.csdn.net/giraffe_255/article/details/80088213