zoukankan      html  css  js  c++  java
  • 表达式和运算符

    表达式和运算符

    表达式

    具有一个或多个操作数, 零个或多个运算符, 可以计算且结果为单个值、对象、方法或命名空间的代码片段。
    i++; 其中i为操作数, ++为运算符

    运算符

    按操作数可以分为

    • 一元运算符(++, new)
    • 二元运算符(+, -, *, /)
    • 三元运算符(条件运算符?:, 唯一一个三元运算符)

    按操作类型可以分为

    类型 符号表示
    基本运算符 X.y, f(x), a[x], x++, x--, new, typeof, checked, unchecked, default, delegate
    一元运算符 +, -, !, ~, ++x, --x, (T)x
    乘除运算符 *, /, %
    加减运算符 +, -
    移位运算符 <<, >>
    关系和类型检测运算符 <, >, <=, >=, is, as
    相等运算符 ==, !=
    逻辑运算符 &, ^, |
    条件运算符 &&, ||, ?:
    赋值运算符 =, +=, -=, *=, /=, %=, &=,

    其优先级从上到下依次增强, 相同优先级情况下, 左结合运算符从左到右顺序计算, 右结合运算符从右到从顺序计算. 在所有运算符当中, 赋值运算符和三元运算符是右结合运算符, 其他所有二元运算符都是左结合运算符. 建议多用括号进行优先级标记.

    另一点需要注意的是,相等运算符对于值类型数据的判断,判断依据是两个操作数的值是否相等。而对于引用类型的操作数而言,大多数情况下比较的是它们的引用,而不管它们引用的对象。但也有例外,string类型是引用类型,但string类型之间比较的是字符串长度和它们的值(因为在string中的相等运算符进行了重载,实际使用的是equal),其中值是大小写敏感的。

    运算符重载

    所有运算符重载均为类的静态方法,且必须使用public进行修饰

    //一元运算符重载

    public static 自定义类型 operator 要重载的运算符(类型)

    public static OperatorSample operator +(OperatorSample obj)

    //二元运算符重载

    public static 自定义类型 operator 要重载的运算符(类型1,类型2)

    public static OperatorSample operator +(OperatorSample obj1, OperatorSample obj2)

    以下必须成对重载

    • ==, !=

    • <, >

    • <=, >=

    可重载的运算符

    一元运算符:+, -, !, ~, ++, --, true, false

    二元运算符:+, -, *, /, %, &, |, ^, <<, >>, ==, !=, >, <, >=, <=

    条件逻辑运算符不能重载,但可使用能够重载的&和|进行计算, 数组索引运算符不能重载,但可定义索引器, 转换运算符不能重载, 但可定义新的转换运算符(使用explicit和implicit关键字)

    不能重载的运算符

    =, ., ?:, ->, new, is, sizeof, typeof

  • 相关阅读:
    STM32F401+nRF24L01无线传输音频(对讲机原型)
    Keil MDK STM32系列(五) 使用STM32CubeMX创建项目基础结构
    Keil MDK STM32系列(四) 基于抽象外设库HAL的STM32F401开发
    Keil MDK STM32系列(三) 基于标准外设库SPL的STM32F407开发
    PlatformIO下的STM32F4xx项目配置
    nRF24L01基于FIFO TX队列的发送性能优化
    个人发展计划IDP 与Smart原则
    IDEA Maven 项目默认编译项目为JDK 1.5
    投资 学习 成长 判断力 面对挫折
    投资 价值 道德 长期主义(5,10,20年)三观
  • 原文地址:https://www.cnblogs.com/home-wang/p/10943387.html
Copyright © 2011-2022 走看看