• C语言运算符


    一、C语言的运算符

    C语言有六种运算符,如下:

    1)算术运算符;

    2)赋值运算符;

    3)sizeof运算符;

    4)关系运算符;

    5)逻辑运算符;

    6)位运算符。

    本章将只介绍算术运算符、赋值运算符和sizeof运算符,关系运算符和逻辑运算符放在其它章节中介绍,位运算符极少使用,了解即可,不深入学习。

    二、算术运算符

    下表显示了 C 语言支持的所有算术运算符。假设变量 A 的值为 18,变量 B 的值为5,则:

    运算符 描述 实例
    + 两个数相加 A+B 将得到 23
    - 一个数减另一个数 A-B 将得到 13
    * 两个数相乘 A*B 将得到 90
    / 分子除以分母 A/B 将得到 3.6
    % 余数运算符,整除后的余数 B%A 将得到 3
    ++ 自增运算符,整数值增加 1 A++ 将得到 19
    -- 自减运算符,整数值减少 1 A-- 将得到 17

    示例(book15.c)

    /*
     *  程序名:book15.c,此程序演示算术运算符的使用。
     *  作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    
    int main()
    {
      double    A=18;      // 定义变量A,赋值18
      double    B=5;       // 定义变量B,赋值5
    
      printf("A的值是:%lf
    ",A);
      printf("B的值是:%lf
    ",B);
    
      printf("A+B的值是:%lf
    ",A+B);
      printf("A-B的值是:%lf
    ",A-B);
      printf("A*B的值是:%lf
    ",A*B);
      printf("A/B的值是:%lf
    ",A/B);
    
      //printf("A除B的余数是:%lf
    ",A%B);
    
      A++;  // 自增1
      printf("A自增后的值是:%lf
    ",A);
    
      B--;  // 自减1
      printf("B自减后的值是:%lf
    ",B);
    
      return 0;
    }
    

    运行效果

    在这里插入图片描述
    变量的自增或自减有两种写法:

    变量名++; // 表示在本次使用变量后再自增;

    ++变量名; // 表示在本次使用变量前自增;

    变量名--; // 表示在本次使用变量后再自增;

    --变量名; // 表示在本次使用变量前自减;

    示例(book16.c)

    /*
     *  程序名:book16.c,此程序演示算术运算符++和--的使用。
     *  作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    
    int main()
    {
      int    ii=0;      // 定义变量ii并初始化
    
      ii=10;
      printf("ii++的值是:%d
    ",ii++);  // 在使用后自增
      printf("ii的值是:%d
    ",ii);
    
      ii=10;
      printf("++ii的值是:%d
    ",++ii);  // 在使用前自增
      printf("ii的值是:%d
    ",ii);
    
      return 0;
    } 
    

    运行效果

    在这里插入图片描述

    三、赋值运算符

    下表列出了 C 语言支持的赋值运算符:

    运算符 描述 实例
    = 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C
    += 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A
    -= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A
    *= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A
    /= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A
    %= 求余数且赋值运算符,求两个操作数的模赋值给左边操作数,浮点数不适用取余数。 C %= A 相当于 C = C % A

    赋值运算符支持的是C语言的基本数据类型,包括char、int和double,字符串(字符数组)不能使用赋值运算符。

    示例(book17.c)

    /*
     *  程序名:book17.c,此程序演示赋值运算符的使用。
     *  作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    
    int main()
    {
      int    C=0;     // 定义变量C并初始化
      int    A=21;    // 定义变量A并初始化
    
      C=A;
      printf("运算符  = 演示,C的值 = %d
    ",C);
    
      C+=A;  // C=C+A;
      printf("运算符 += 演示,C的值 = %d
    ",C);
    
      C-=A;  // C=C-A;
      printf("运算符 -= 演示,C的值 = %d
    ",C);
    
      C*=A;  // C=C*A;
      printf("运算符 *= 演示,C的值 = %d
    ",C);
    
      C/=A;  // C=C/A;
      printf("运算符 /= 演示,C的值 = %d
    ",C);
    
      C=200;
      C%=A;  // C=C%A;
      printf("运算符 %= 演示,C的值 = %d
    ",C);
    
      return 0;
    }
    

    运行效果

    在这里插入图片描述

    四、sizeof运算符

    sizeof是C语言的关键字,它用来计算变量(或数据类型)在当前系统中占用内存的字节数。

    sizeof不是函数,产生这样的疑问是因为sizeof的书写确实有点像函数,sizeof有两种写法:

    用于数据类型

    sizeof(数据类型);
    

    数据类型必须用括号括住。 

    printf("字符型变量占用的内存是=%d
    ",sizeof(char));   // 输出:字符型变量占用的内存是=1
    printf("整型变量占用的内存是=%d
    ",sizeof(int));   // 输出:整型变量占用的内存是=4
    

    用于变量

    sizeof(变量名);
    sizeof 变量名;
    

    变量名可以不用括号括住,带括号的用法更普遍,大多数程序员采用这种形式。 

    int ii;
    printf("ii占用的内存是=%d
    ",sizeof(ii));   // 输出:ii占用的内存是=4
    printf("ii占用的内存是=%d
    ",sizeof ii);   // 输出:ii占用的内存是=4
    

    五、运算符的优先级

    在+-*/四则运算符中,*/的优先级高于+-,在C语言中,其它的运算符都有优先级,我不想介绍它们的优先级,我写了二十年的程序,也记不住各种运算符的优先级的关系。

    我不建议程序员记住各种运算符的优先级,而是用括号解决全部的问题,括号的优先级是最高的,括号中的表达式会优先执行,这样各个运算符的执行顺序就一目了然了。

    int d = a + (b * c);
    

    六、版权声明

    C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
    来源:C语言技术网(www.freecplus.net)
    作者:码农有道

    如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!

  • 相关阅读:
    中移动ipv6-老毛子固件获取ipv6设置
    win7-win10 禁用IPV6临时地址
    辅助调用函数【call,apply,bind】
    Unraid修改docker镜像地址&默认启动
    docker基本入门知识-小白向
    [不止于代码]Unraid基本使用速记
    Dockerfile文件说明
    Git之pull,fetch差别
    代码片段添加智能提示,打造一款人见人爱的ORM框架
    新定义三层,指挥官模式
  • 原文地址:https://www.cnblogs.com/wucongzhou/p/12499338.html
Copyright © 2020-2023  润新知