• i++和++i


    区别1: i++ 返回原来的值,++i 返回加1后的值

      这个很明显,不给予解释。

    区别2: i++ 不能作为左值,而++i 可以

    1 int i = 0;
    2 ++i = 1; //正确
    3 i++ = 5; //错误

    左值:

      左值放在赋值符号(=)的左边,左值表示存储在计算机内存的对象,而不是常量或计算的结果。左值在内存中可以进行读和操作,左值可以被赋值

    右值:

      右值放在赋值符号(=)的右边,右值代表的真实值,相当于数据值,不可以被赋值

    简单来说,左值与右值的根本区别在于是否允许取地址运算符&获得对应的内存地址。

    // ++i
    int& int::operator++() //这里返回的是一个引用形式,就是说函数返回值也可以作为一个左值使用
    {
      *this += 1;  // 增加
      return *this;  // 取回值
    }
    
    //i++
    const int int::operator++(int) //函数返回值是一个非左值型的,额外的int形参在函数中可以使用但是一般不这么做,只是用来区分后置版本和前置版本
    {
      int oldValue = *this;  // 开辟额外的空间,存下原值
      ++(*this);  // 调用++i增加
      return oldValue;  // 返回被取回的值
    }

    i++ 最后返回的是一个临时变量oldValue,而临时变量是右值

  • 相关阅读:
    实现简单HttpServer案例
    实现简单Mybatis案例
    python 判断文件和文件夹是否存在的方法 和一些文件常用操作符
    常用模块学习
    python格式化输出
    ubuntu 配置vim编辑器
    linux 安装python3.x
    python属性限制 __slots__
    选课系统作业
    通过sorted获取dict的所有key值或者value值
  • 原文地址:https://www.cnblogs.com/Joezzz/p/9705873.html
Copyright © 2020-2023  润新知