首页 > 其他分享 >C语言--++a,a++的区别

C语言--++a,a++的区别

时间:2024-08-04 17:08:00浏览次数:13  
标签:指向 ++ C语言 --++ int 地址 oldValue 取回

// 前缀形式:
int& int::operator++() //这里返回的是一个引用形式,就是说函数返回值也可以作为一个左值使用
{//函数本身无参,意味着是在自身空间内增加1的
    *this += 1;  // 增加
    return *this;  // 取回值
}
//后缀形式:
const int int::operator++(int) //函数返回值是一个非左值型的,与前缀形式的差别所在。
{//函数带参,说明有另外的空间开辟
    int oldValue = *this;  // 取回值
    ++(*this);  // 增加
    return oldValue;  // 返回被取回的值
}

Q:int a=3,b=0 ;b=a++ + ++a + a++;

所以b等于oldValue+this+oldValue
this指向a的地址,++a先对a加1,再返回a的地址。
a++时,a的oldValue是3,而
this指向的a的地址中a=4;
++a时,this指向a的地址,* this+=1;a变成5;
a++时,a的oldValue是5,而*this指向的a的地址中a=6;

标签:指向,++,C语言,--++,int,地址,oldValue,取回
From: https://www.cnblogs.com/Taylor-demo/p/18341961

相关文章

  • 位段 -- 内存布局详解-浅谈C语言
    目录位段位段的介绍位段使用示例:位段的内存分配Example内存分配解析:位段的跨平台问题位段位段的介绍位段(二进制位):就是按位存储位段(bit-field)是C语言中的一种特殊数据类型,它允许将一个字节分成几个部分,并为每个部分指定特定的位数,以便在内存中存储和访问这些部分。其中位......
  • C++入门
    目录命名空间IO流缺省参数函数重载为什么C语言不支持重载而C++支持重载?引用引用特性:常引用使用场景引用和指针的区别内联函数的定义以及注意auto关键字自动类型推断基于范围的for循环命名空间C语言中会有命名冲突,C++为了解决这个问题增加了namespace(命名空间)......
  • C语言--基本数据类型
    数据类型概述数据类型分类基本数据类型构造数据类型指针类型空类型标识符规范在C语言中,一般标识符用于变量名、宏名、函数名…注意事项:可用数字、英文字母(大小写)、下划线、美元符形如:data、temp、func()、add_int()、xxx_123()数字不能位于开头不能和关键字重复si......
  • 如何处理“内部C++对象(某些对象)已删除”?
    当我关闭具有记录器的窗口然后重新打开该窗口时,我收到“RuntimeError:内部C++对象(PySide6.QtWidgets.QPlainTextEdit)已删除。”(我根据这篇文章制作了记录器:在pyqt中显示日志的最佳方式?)。当我从LoggerWindow的closeEvent中删除“self.deleteLater()”时,我没......
  • c语言·其三
    返回值8位—al16位—ax32位—eax64位—eax(放低位,edx(高位64: 32:1、char(两个字节)类型的返回值  2、short(两个字节)类型的返回值  3、int(八个字节)类型的返回值  参数传递无论是char还是short类型,反汇编中都是以4个字节传递结论:整数类型的参数,一律使用int类型......
  • 代码优化:使用C语言重构单片机汇编启动代码
    目录前言实现思路单片机启动流程汇编语言分析开发环境代码分析总结前言在近期的工作需求中,我需要对实时操作系统(RTOS)的底层代码进行一些必要的调整。为此,我重新深入研究了ARM架构的相关知识点。在这一过程中,我回顾了之前一直让我感到困惑的一个技术问题:在几乎所有的......
  • 15.75.【C语言】表达式求值
    目录一.整型提升1.定义2.一.整型提升1.定义C语言中整型算术运算总是至少以缺省(默认)整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升2.整型提升的原因:表达式的整型运算要在CPU的相应运算器件......
  • C++ 返回值类型推导
    C++返回值类型推导前言C++中获取函数签名可以很简单地用decltype(函数名)来获得,但是这样无法直接提取出返回值类型。有时我们需要获取函数或可调用对象的返回值类型,以便进行后续的操作,在泛型编程中很常用,特别是当不同的参数集的结果类型不同时。头文件<type_traits>:C......
  • 【C++核心篇】—— C++面向对象编程:封装相关语法使用和注意事项详解(全网最详细!!!)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、封装(类)1.封装的使用(类和对象)2.对象的初始化和清理2.1构造函数2.2析构函数2.3构造函数的分类及调用3.深拷贝与浅拷贝4.C++对象模型和this指针5.友元6.运算符重载前言在本篇......
  • 【C++基础篇】—— 面向对象编程前的准备(内存分区,引用、函数重载)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、内存分区模型1.C++内存分区2.new操作符二、引用三、函数重载1.函数基本使用2.函数重载前言在本篇文章中,主要是对C++的基础语法进行回顾学习,回顾学习C++的基本语法规则、数据类型......