精华内容
下载资源
问答
  • c语言操作符

    2018-05-16 20:54:43
  • C语言操作符

    2019-05-23 21:56:39
    C语言操作符总结:

    C语言操作符总结:

    展开全文
  • C语言操作符总结

    2017-10-09 11:35:11
    在我们C语言编程中,经常用到我们的C语言操作符进行优化程序和表达式之间的运算,大大的方便了程序员实现结果和出来数字间的逻辑关系。  显而易见,对C语言操作符的熟悉运用对我们学习C语言至关重要,以下是我对...

                在我们C语言编程中,经常用到我们的C语言操作符进行优化程序和表达式之间的运算,大大的方便了程序员实现结果和出来数字间的逻辑关系。

            显而易见,对C语言操作符的熟悉运用对我们学习C语言至关重要,以下是我对C语言操作符的总结...

     

    操作符的分类:

             1.算术操作符

             2.移位操作符

             3.位操作符

             4.赋值操作符

             5.单目操作符

             6.关系操作符

             7.逻辑操作符

             8.条件操作符

             9.逗号表达式

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


    1.算术操作符:


                            +       -       *       /       %

                  

              在使用算术操作符时,我们应该注意  %(取模)操作符只能在整数之间使用,而其他算术操作符可以用于整数和浮点数。       


    2.移位操作符:

                               <<  左移操作符 

                               >>  右移操作符

      

        <<  左移操作符

                   

        >> 右移操作符

            1.算术右移  (左边拿符号位来补,右边抛弃)

            2.逻辑右移  (左边拿0来补,右边抛弃)

                    int num = -1

                     num >> 1

                

               在移位操作符中,不可以移动负数位,这是标准未定义的。


    3.位操作符:

                          &        |           ^                 

                          与     或       异或


             按位异或:相同为0,相异为0


    4.赋值操作符:          =

               复合赋值符:    +=     -=   *=     /=     %=     >>=    <<=     &=     |=     ^=  

               复合赋值符可以简化程序,减少程序员的工作量,方便理解。


    5.单目操作符

                          

                         ! 逻辑反操作     

                          -   负值                                       +    正值

                          &  取地址                                   ~   对一个数的二进制按位去反

                          --   前置、后置 --                       ++  前置、后置 ++    

                          *   间接访问操作符                  (类型)强制类型转换

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


    注意:1.  sizeof 不是函数,只是操作符,它返回的是一个变量或者类型的大小。

                2. a++       先使用a,再增加              ++a  先增加,再使用a

                    a--         先使用a,再减                   --a  先减,再使用a

                3.        float  b = 1.23

                        强制类型转换 :    int  c =(int)b          

                        强制转换后:             c   =   1


    6.关系操作符


                               >               >=                 <              <=                 !=              ==

                            大于         大于等于        小于        小于等于     不等于        等于 



    7.逻辑操作符

                                     &&                                          ||

                                    逻辑与                                  逻辑或

                 区分逻辑与和按位与                  

                 区分逻辑或和按位或                



    8.条件操作符

                                   exp1?exp2 : exp3

               如果表达式exp1为真,则输出为表达式exp2,为假,则输出为exp3。


    9.逗号表达式

                     exp1,exp2,exp3,....expN


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


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

    (1)[ ]      数组下标引用操作符

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

    (3)    .结构体.成员名

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


            操作符在编程中起到很大的作用,希望这样的总结对大家有所帮助。


                      

    展开全文
  • 小结 | C语言操作符

    万次阅读 2017-11-10 11:11:45
    C语言操作符分类总结: 一、算数操作符 二、移位操作符 移动规律: 大小的变化: 三、位操作符 四、赋值操作符 = 五、单目操作符 六、关系操作符 七、逻辑操作符 八、条件操作符(三目操作符) 九、逗号表达式 ...

    目录:

    C语言操作符分类总结:

    C语言中大致分为以下几类:
    1. 算数操作符
    2. 移位操作符
    3. 位操作符
    4. 赋值操作符
    5. 单目操作符
    6. 关系操作符
    7. 逻辑操作符
    8. 条件操作符
    9. 逗号表达式
    10. 下标引用、函数调用、结构成员访问操作符

    注意:
    其中,移位操作符和位操作符都是对二进制序列进行操作。

    =======具体分析=======


    一、算数操作符


    + - * / %

    这里需要注意的是:
    1.除法(/)
    整数除法时,左右两边都需要为整数;
    而浮点数除法时,左右两边至少有一个数为浮点数。
    2.取模运算(%)
    只能对整数操作。


    二、移位操作符


    <<左移操作符
    >>右移操作符

    移动规律:

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

    大小的变化:

    左移:每左移一位,相当于乘2;
    右移:每右移一位,相当于除2。


    三、位操作符


    • & 按位与 (两数二进制位都为1 —>1)
    • | 按位或 (两数二进制位有一个为1 —>1)
    • ^ 按位异或 (两数二进制位不同为1,相同为0)

    关于异或的应用例题:
    在一个是数组中,只有一个数字单独出现,其余都两两出现,求单独出现的数字。

    int ret = 0;
    for(i = 0; i < n; i++){
    ret = ret ^ a[i];
    }

    异或(^)的特点:
    1.两数相同,异或为0;
    2.0与任何数异或,还是这个数。

    这里有一道关于异或的题,是上一题的升级版解题思路较巧妙,有兴趣的可以看下:

    题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现。

    #include <stdio.h>
    
    void search_one(int arr[],int len)
    {
    
        int data = arr[0];
        int i = 1;
        for (; i < len; i++) {
            data ^= arr[i];
        }
        //异或结果为 data = m ^ n; (假设单独出现的两数为m、n)
        //由于m、n为单独出现的两数,所以m一定不等于n,即data一定不为0,data的二进制位至少有一位为1
    
        int flag = 1;
        for (i = 0; i < sizeof(int)*8; i++) {
            if (data & (flag<<i) ) {
                flag <<= i;
                break;//可不加break,因为用flag记录哪一位都可以
            }
    
        }
        //找出m与n相异的一位,即data二进制位为1的一位
        //用flag来记录是哪一位,在这里我们假设是第x位
    
        int dataA = 0;//组A
        int dataB = 0;//组B
    
        for (i = 0; i < len; i++) {
            if (arr[i] &flag) {
                dataA ^= arr[i];
            }
            else{
                dataB ^= arr[i];
            }
    
        }
        /*在这里我们将整个数组的数分成两组,分组条件是,第x位为1的在一组里,为0的在一组里,可得出两点结论
        1.m、n肯定不在一组里
        2.重复出现的两个数一定在一组里*/
    
        printf("%d %d\n",dataA,dataB);
    
    }
    
    
    
    int main(int argc, const char * argv[]) {
        int a[] = {1,1,2,8,2,3,3,4,4,5,6,5};
        search_one(a,12);
    
        return 0;
    }

    四、赋值操作符 =


    赋值操作符可以与其他操作符连用,形成复合赋值符,
    如:
    += , -= , *= , /= , %= , >>= , << , &= , |= , ^=

    用法:
    a += 2;等同于 a = a + 2;
    其余类似。


    五、单目操作符


    • ! 取反
    • – 负值
    • + 正值
    • & 取地址
    • sizeof 计算字符串长度(以字节为单位)
    • ~ 对二进制取反
    • – 前置、后置–
    • ++ 前置、后置++
    • * 间接操作符(解引用操作符)
    • (类型) 强制类型转换

    单目操作符即只有一个操作元素(可以看到,前面几个操作符都有两个操作元素);

    这里需要注意的是,sizeof这个操作符,
    int a = 10;
    sizeof (a)——这里括号可以省略,即写成 sizeof a 也可以;
    但是sizeof(int)这种情况下括号不可省略;

    另外和数组结合时,也需要注意:
    int arr[3] = {1,2,3}
    sizeof(arr) 结果为12(arr表示整个数组)
    sizeof(arr+0) 结果为4(表示首元素地址)

    下面再来看一段关于sizeof的代码:

    int a = 1;
    short s = 3;
    printf("%d\n",sizeof(s=a+5));
    printf(""%d\n",s);

    结果为:
    2
    3

    可能会有人有疑问,明明 s = a + 5 赋值给了s,为什么s的值还是3?
    这里有一点需要记住,放在sizeof内部的表达式不参与运算,因为关于sizeof的运算是在编译期间就完成了的,而我们所讲的sizeof运算,需要在运行期间完成,即在运行前,sizeof内部的值已经被替换成了2(sizeof最终看s的类型),代码相当于

    int a = 1;
    short s = 3;
    printf("%d\n",sizeof(2));
    printf(""%d\n",s);

    那s的值也就不会发生变化,输出时仍为3。


    六、关系操作符


    >= , <= , > , < , != , ==


    七、逻辑操作符


    && 逻辑与
    || 逻辑或
    需要与位运算(按位与&、按位或|)区分开来。

    下面是一道关于逻辑与经典的例题:

     int i = 0 , a = 0 , b = 2 , d = 4;
        i = a++ && ++b && d++;
        printf("%d %d %d\n",a,b,d);

    结果为 1 2 4
    可以看到,a先参与了运算,再自增,但是参与运算时它的值为0,逻辑与(&&)操作符的运算特点是,全为1结果才为1,当出现了一个0时,后面的他将不会继续运算下去,因此,++b和d++并未实现,所以结果只有a加了1.

    再看另一个操作符:

    int i = 0 , a = 0 , b = 2 , d = 4;
    i = a++ || ++b || d++;
    printf("%d %d %d\n",a,b,d);

    结果为 1 3 4
    逻辑或的运算特点是,当所有值都为0时,结果才为0,当a参与运算时为0,||会继续看后面的运算,当++b的值不为0时,无论后面的值是多少,其结果已经是1了,后面的d++也就不会运算下去了。


    八、条件操作符(三目操作符)


    exp1 ? exp2 : exp3
    当exp1的值为真时,执行exp2表达式,反之,执行exp3表达式;

    例:
    求a,b中最大值可以这么求
    int max = a>b ? a : b;


    九、逗号表达式


    exp1,exp2,exp3,...,expN
    从左向右依次执行,最终结果为expN。


    十、下标引用、函数调用、结构成员访问操作符


    • 下标引用操作符即 [ ],经常在数组中能看到,
      例如 int arr[10] = {0};
      当赋值arr[5] = 2;相当于执行了*(arr+5)= 2;这样一个操作。

    • 函数调用操作符 (), 在函数中经常能看到。

    • 结构成员访问操作符,分为两类:.->
      当我们定义一个结构体
    struct Stu{
        char name[20];
        char id[13];
        int age;
    };

    这时候只是定义,创造了一个类型,注意这个时候并没有给他分配空间,类似于创造了int这样一个类型。
    而当我们用时,

    struct Stu s;//这相当于我们 int a;(开辟了空间)
        strcpy(s.name,"张三");
      strcpy(s.id, "201606060501");
        s.age = 20;

    在这里s.name中的. 就是成员访问操作符。

    但是另一种情况,
    struct Stu *p = &s;
    如果这时候需要通过指针p来修改结构体成员的值,
    则:

    strcpy((*p).name,"张三");
        strcpy((*p).id, "201606060501");
        (*p).age = 20;

    但是(*p).这种写法复杂繁琐,于是有了另一个操作符->,它的用法如下:

    strcpy(p->name,"张三");
        strcpy(p->id, "201606060501");
        p->age = 20;
    展开全文
  • C语言操作符优先级

    2014-09-23 16:42:32
    C语言操作符很多,如果表达式含几个操作符,难免会忘记哪个优先级更高一些。如果按你记错的优先级计算的话,那结果可就是差十万八千里了。在这里转载一位博主的总结,原文地址:...
  • 前几天学习了C语言的操作符...一,C语言操作符有以下几类 1.算术操作符  + - * / % 2.移位操作符 ①   eg :int i=10 I ② >> 右移操作符 首先右移运算分两种:  逻辑移位:左边用0填充,右边丢弃
  • c语言操作符详解

    2019-04-17 17:33:06
    c语言运算法有以下几大类: 算术操作符 关系操作符 逻辑操作符操作符 赋值运算符 条件运算符 逗号运算符
  • 写这篇C语言操作符主要为练手,总结一下这两天了解的有关操作符的知识,以免以后老年痴呆了忘了相关的内容还可以有个地方回来瞄一眼。 如果有什么有错的地方被路过的大牛们看出来了还请加以指正。。。操作符 个人...
  • 小白学习C语言操作符

    2017-11-18 13:32:38
    小白学习C语言操作符 C语言运算符是说明特定操作的符号,它是构造C语言表达式的工具 。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。除了常见的三大类,算数运算符、关系...
  • c语言操作符总结(一)

    千次阅读 多人点赞 2021-01-26 18:37:02
    文章目录算术操作符移位操作符 算术操作符 + - * / % 1.除了 % 操作符,其他操作符都可以作用于整数和浮点数. 2.对于 / 操作符,如果两端都为整数,执行整数除法,只要有一端为浮点数就为小数除法 3.%操作符两端...
  • C语言操作符(总结)

    千次阅读 2018-03-24 14:40:48
    操作符 分类: 算术操作符 移位操作符操作符 赋值操作符 复合赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号操作符 下标引用、函数调用和结构成员 算术操作符 操作符 功能 ...
  • C语言操作符优先级  C语言操作符优先级 优先级 运算符 含 义 要求运算 对象的个数 结合方向 1 () [] -> .
  • C语言操作符的总结

    2017-11-21 14:59:14
    学习C语言的童鞋们,操作符是不是很重要呢?答案是一定的哦。
  • C语言操作符~小结

    2019-05-23 20:20:21
    算数操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员。 算数操作符:(+ - * \ %) %操作符的两个操作数必须都为整数。 ...
  • 常用的c语言操作符

    2017-10-14 16:33:24
    常用运算符的优先等级 1. () 2. ! ,++,- - 3.... 4.... 5.... 6.... 7.... 8.... 9. 逗号表达式算术操作符 (+ - * / %) ... 除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。 对于/操作符如果两个操作数都为整数
  • C语言操作符小结

    千次阅读 2018-05-11 23:57:20
    操作符分类 &amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;nbsp; 算术操作符 &amp;amp;amp;amp;amp;amp;nbsp;&...
  • C语言操作符顺序

    2016-11-18 15:47:49
    C operators sequence
  • C语言操作符优先级 优先级 运算符 含 义 要求运算 对象的个数 结合方向 1 () [] -> . 圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符   自左至右 2 ! 逻辑非运算符 ...
  • C语言操作符-表格版

    2018-03-27 00:45:52
    对常用操作符简单的归纳,记忆更深刻一些。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 171,354
精华内容 68,541
关键字:

c语言操作符

c语言 订阅