zoukankan      html  css  js  c++  java
  • 运算符:三目运算符,运算符优先级,sizeof,自增自减,取余


    一://---------运算符-----------//
      1.运算符是告诉编译程序执行特定算术或逻辑操作的符号。

      2.按照功能划分:

        算术运算符、 关系运算符与逻辑运算符、按位运算符。

      3.运算符根据参与运算的操作数的个数分为:
        单目运算、双目运算、三目运算

      4.单目运算:只有一个操作数 如 : i++ ! sizeof
      双目运算:有两个操作数 如 : a+b
      三目运算符:C语言中唯一的一个,也称为问号表达式 a>b ? 1 : 0

    二://---------优先级与结合性-----------//
      优先级: 15级 在表达式中,优先级 较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的 结合性所规定的结合方向处理。

      结合性: C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。

      小技巧 加括号

      特点:什么样数据类型相互运算结果还是什么数据类型


    三://---------算术运算符-----------//
      结合性:从左到右

      1.优先级:
        (1) * / % 优先级 大于 + -
        (2) 优先级相同则左结合计算

      2.求余运算符
        注意:
          m%n 求余,相当于m/n 获取余数
        (1)n等于0 无意义
        (2)m等于0 结果为0
        (3)m>n 正常求余 如:8%3 = 2
        (4)m<n 结果是m 如:2%4 = 2 1%4 = 1 3%8=3
        2)运算结果的正负性取决于第一个运算数,跟后面的运算数无关

    四://---------类型转换-----------//
      1.类型转换分为:隐式数据类型转换(自动转换) 和 显示数据类型转换(强制装换--强转)(类型说明符) (表达式)

      2.显示类型转换的方法是在被转换对象(或表达式)前加类型标识符,其格式是: (类型标识符)表达式

      3.在使用强制转换时应注意以下问题:
        1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y 则成了把x转换成int型之后再与y相加了。
        2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性 转换,而不改变数据说明时对该变量定义的类型。

    五://---------表达式-----------//
      将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来的、有意义 的式子称为表达式。

      例如:算术表达式、逻辑表达式、字符表达式等。
      表达式可以是常量也可以是变量或算式,在表达式中又可分为:算术表达式、逻辑表达式和字符串表达式。

      表达式的特点:
      表达式是一个意义的式子,所以一定有返回值


    1.赋值表达式-----------//
      赋值运算符记为“=”,由“=”连接的式子称为赋值表达式。
      其一般形式为: 变量=表达式
      “=”定义为运算符,从而组成赋值表达式。

      凡是表达式可以出现的地方均可出现赋值表达式。


    2.赋值表达式语句-----------//
      在赋值表达式后面添加一个分号,构成了一个语句,称为赋值语句。


    3.复合赋值表达式语句-----------//
      在赋值符“=”之前加上其它二目运算符可构成复合赋值符。


    4.赋值运算符优先级排名14位,仅仅高于“,”运算符。

     自增自减运算符-----------//
        1)前缀表达式:++x, --x; 其中x表示变量名,先完成变量的自增自减1运算,再用x的值作为表
        达式的值;即“先变后用”,也就是变量的值先变,再用变量的值参与运算。

        2)后缀表达式:x++, x--; 先用x的当前值作为表达式的值,再进行自增自减1运算。即“先用
        后变”,也就是先用变量的值参与运算,变量的值再进行自增自减变化。

      注意:不管“++” 在前还是在后,最后变量的值都会+1

    3)自增、自减运算只能用于单个变量,只要是标准类型的变量,不管是整型、实型,还是字符型 变量等,但不能用于表达式或常量。

      优先级很高 右结合


    //---------sizeof运算符-----------//
    sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。sizeof操作符以字节形式给 出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小 由操作数的类型决定。
    用法:sizeof(常量/变量)

    1)用于数据类型
    sizeof使用形式:sizeof(type) 数据类型必须用括号括住。如sizeof(int)。

    2)用于常量(可以省略括号)
    int size = sizeof(1); size = sizeof(1.1); size = sizeof(1.1f); size = sizeof('a'); //4
    当sizeof后面的操作数是常量或是变量那么后面小阔号是可以省略的
    size = sizeof 1;

    3)用于变量(可以省略括号)
    sizeof使用形式:sizeof(var_name)或sizeof var_name 变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形式。带括号的 用法更普遍,大多数程序员采用这种形式。
    char a;
    size = sizeof(a);
    size = sizeof a; //省略了括号

    区分:
    //------
    char a;
    printf("%lu",sizeof(a));
    //-------
    printf("%lu",sizeof(char);
    //-------
    printf("%lu",sizeof('a'));

    注意:
    sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据 类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。

    //---------逗号运算符-----------//
    在C语言中逗号“,”也是一种运算符,称为逗号运算符。
    其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。
    a = (a+b,c+2) 其一般形式为:
    表达式1, 表达式2
    2、其求值过程是分别求两个表达式的值,并以表达式2的(最后一个表达式的值)值作为整个逗号表达式的值。


    逗号运算符使用注意:
    1)逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。例如:
    表达式1, ( 表达式2, 表达式3 )
    形成了嵌套情形。
    因此可以把逗号表达式扩展为以下形式:
    2)程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号 表达式的值。
    3)并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用 作各变量之间的间隔符。

    //---------关系运算符-----------//
    非0即真
    比较两个量的运算符称为关系运算符。
    关系运算符返回值只有两个要么是真(1) 要么是假(0)

    > < >= <= == !=
    在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=


    //---------逻辑运算符运算符-----------//
    C语言中提供了三种逻辑运算符:
    &&(与运算) ||(或运算) !(非运算)
    逻辑表达式的一般形式为:
    表达式 逻辑运算符 表达式
    其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。例如:
    (a&&b)&&c 根据逻辑运算符的左结合性

    逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。

    1) 与运算(&&) ----> 口诀:同真为真,一假则假
    2) 或运算(||) ----> 口诀:一真为真,同假为假
    3) 非运算(!) ----> 口诀:真变假,假变真

    与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。 非运算符(!)为单目运算符,具有右结合性。

    注意:
    1)虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。
    但反过来在判断一个量是为“真”还是为“假”时, 以“0”代表“假”,以非“0”的数值作为“真”。


    与短路:&& 只要第一个条件表达为假那么后面的条件表达就不参与运算了
    或短路:|| 只要第一个条件表达式为真那么后面的条件表达式就不参与运算了

    运算符优先级:
    ()
    -负号 右结合
    ! 右结合
    自增自减 左结合
    算术运算符 左结合
    关系运算符 左结合 (== !=略低一级)
    逻辑 && || 左结合 注意:(非运算符(!)为单目运算符,具有右结合性。)
    三目运算符 右结合
    赋值运算符 右结合
    逗号运算符 左结合

    int a = 4;

    !a>3

    //---------三目运算符-----------//
    由条件运算符组成条件表达式的一般形式为:
    表达式1? 表达式2: 表达式3

    如果表达式1的值为真,则以表达式2 的值作为条件表达式的值 否则以表达式2的值作为整个条件表达式的值。 条件表达式通常用于赋值语句之中。(表达式1控制表达式2或者表达式3的输出)

    注意:
    注意以下几点:
    1. 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
    因此 max=(a>b)? a:b可以去掉括号而写为 max=a>b?a:b
    2. 条件运算符?和:是一对运算符,不能分开单独使用。
    3. 条件运算符的结合方向是自右至左。
    a>b?a:c>d?c:d应理解为
    a>b?a:(c>d?c:d)

    //---------Xcode的补充-----------//
    1.显示行号
    2.主题样式
    3.断点调试

  • 相关阅读:
    “XXXXX” is damaged and can’t be opened. You should move it to the Trash 解决方案
    深入浅出 eBPF 安全项目 Tracee
    Unity3d开发的知名大型游戏案例
    Unity 3D 拥有强大的编辑界面
    Unity 3D物理引擎详解
    Unity 3D图形用户界面及常用控件
    Unity 3D的视图与相应的基础操作方法
    Unity Technologies 公司开发的三维游戏制作引擎——Unity 3D
    重学计算机
    windows cmd用户操作,添加,设备管理员组,允许修改密码
  • 原文地址:https://www.cnblogs.com/jiayongqiang/p/5091415.html
Copyright © 2011-2022 走看看