zoukankan      html  css  js  c++  java
  • c语言操作符总结

                                  c语言操作符总结

    一、算数操作符 +. -. *. /. %

    1.  %操作符的两个操作数必须为整数。返回的是整数之后的余数。

    2. %操作符之外,其他几个操作符可以作用于整数和浮点数。

    3.  /操作符的两个操作数是整数的话,执行整数除法;只要有浮点数执行的话,就执行浮点数除法。

    二、移位操作符 <<  >>

    1. << 左移操作符

      移动规则:左边抛弃,右边补0。

        左移1位相当于该数乘以2,左移2位相当于该数乘以2*2=4,15<<2=60,即乘了4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。
      假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64时,左移一位时溢出的是0

    ,而左移2位时,溢出的高位中包含1。

     

    2. >> 右移操作符

      移动规则:  

    (1)逻辑移位:左边用0填补,右边丢弃。

    (2)算数移位:左边用原该值的符号位填补,右边丢弃。

        一般用算数移位,右1位相当于该数2

    三、位操作符 & | ^

    1.   &按位与

        如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。

     1)将二进制数中的某一位置0或者置1

    例:将下面的1置0

    00000000 00000000 00000000 10011001

    <===11111111 11111111 11111111 11110111

    按位取反

    <===00000000 00000000 00000000 00001000

    1左移3位

    <===1<<3

    (2)清零

        若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条件:

    原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。

    2. 按位或 |

        两个相应的二进制位中只要有一个为1,该位的结果值为1。借用逻辑学中或运算的话来说就是,一真为真

    3. 按位异或 ^

       a^a=0  0^a=a

    交换两个值,不用临时变量

    c语言源代码:
    #include <stdio.h>
    main()
    {
    int a=3;
    int b = 4;
    a=a^b;
    b=b^a;
    a=a^b;
    printf("a=%d b=%d",a,b);

    四、赋值操作符

    赋值操作符可以让你得到一个你之前不满意的值。

        复合操作符:+=.-=.*=./=.>>=.<<=.&=.|=.^=

    五、单目操作符

    1. 逻辑反操作

       a=10;     !a=0;

    2. 负值 -

       a=10;  -a=-10;

    3. 正值 +

    4. 取地址 &

       printf(“%p”,&a);

       printf(“%x”,&a);

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

       sizeof不是函数;

    6. 前置、后置 --

          1-- 先使用后自加;--1先自减后使用

    7. 前置、后置 ++

          1++ 先使用在自加;++1 先自加后使用

    8. 间接访问操作符 * (指针变量)

      int a=10;

      int *p=&a;

    *p=20;  //int*是整形指针类型,不是操作符;  p是变量名,p的类型是int*;  p存a的地址;

    9. 强制类型转化 ()

      int num =0;

      float f=3.14f;

      num=(int)f;

      f为float 类型转换为int类型

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

      int a=0;

      ~a=-1;

    六、关系操作符

    > 、>= 、< 、<=、!=、==

    == 等于

    = 赋值

    七、逻辑操作符

    && 逻辑与

    ||逻辑或

    区分逻辑与和按位与:

    1&2 -->01 10-->0

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

      区分逻辑或和按位或

       1|2-->01|10-->11-->3

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

    八、条件操作符  

    三目操作符  exp1 ? exp2 :exp3

    Eg; b=(a>5)? 3:(-3); //判断a是否大于5,如果大于,则将a等于3的值赋值给b;否则将a等于-3的值赋值给b。

    Eg:max=(a>b)? a:b;  //求两个数中的最大值。

    九、逗号操作符

     exp1 , exp2 ,exp3 ,exp4 ......expN

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

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

     1、[]

      操作数:一个数组名,一个索引值

      int arr[10];//创建数组

      arr[9]=10;//实用下标引用操作符

    2、()

         函数调用操作符

         接受一个或者多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

    Eg:

    #include <stdio.h>

    void test1()

    {

    printf("hehe! ");

    }

    void test2(const char *str)

    {

    priintf("%s ",str);

    }

    int main()

    {

      test1();//()不能省略

      test2(“hello world!”);

    return 0;

    }

    3、访问一个结构体成员

      .结构体.成员

      ->结构体指针->成员名

    Eg:

    #include <stdio.h>

    struct Stu //类型

    {

    char name[10];

    int age;

    char sex[5];

    double score;

    };//分号不能省略

    void set_age2(struct Stu* pStu)

    {

    pStu->age=18; //结构体成员访问

    }

    int main()

    {

        struct Stu stu; //stu是对象

    struct Stu* pStu=&stu; //结构体成员访问

    stu.age=20; //结构体成员访问

    set_age1(stu);

    pStu->age=20; //结构体成员访问

    set_age2(pStu);

    return 0;

    }

  • 相关阅读:
    浅浅的分析下es6箭头函数
    css实现背景半透明文字不透明的效果
    五星评分,让我告诉你半颗星星怎么做
    微信小程序--成语猜猜看
    微信小程序开发中如何实现侧边栏的滑动效果?
    强力推荐微信小程序之简易计算器,很适合小白程序员
    swing _JFileChooser文件选择窗口
    file类简单操作
    序列化对象
    MessageBox_ swt
  • 原文地址:https://www.cnblogs.com/xjq6898/p/7712866.html
Copyright © 2011-2022 走看看