【编译原理】对++*p++操作理解

news2024/11/24 15:57:48

目录

1. 代码段执行结果

2. ++*p++的结合过程

3. 通过汇编代码判断执行结果


1. 代码段执行结果

对于以下代码:

int main()
{   
    int i = 0;
    int *p = &i;
    ++ *p ++; 
    return i;
}

输出结果为:

ASM generation compiler returned: 0
Execution build compiler returned: 0
Program returned: 1        // 返回的结果为1

2. ++*p++的结合过程

C语言中的优先级与结合性:

优先级运算符含义结合性
1::域运算符左结合
2

( )

[ ]

->

.

++

--

括号,函数调用

数组下标运算符

指向成员运算符

成员运算符

自增运算符(后置)(单目运算符)

自减运算符(后置)(单目运算符)

左结合
3

++

--

~

-

+

*

&

(类型)

sizeof

new

delete

(以下均为单目运算符)

自增运算符(前置)

自减运算符(前置)

按位取反运算符

逻辑非运算符

负号运算符

正号运算符

指针运算符

取地址运算符

类型转换运算符

长度运算符

动态分配空间运算符

释放空间运算符

右结合
4

*

/

%

乘法运算符

除法运算符

求余运算符

左结合
5

+

-

加法运算符

减法运算符

左结合
6

<<

>>

按位左移运算符

按位右移运算符

左结合
7<    <=    >    >=关系运算符左结合
8

==

!=

等于运算符

不等于运算符

左结合
9&按位与运算左结合
10^按位异或运算符左结合
11|按位或运算左结合
12&&逻辑与运算符左结合
13||逻辑或运算符左结合
14?    :条件运算符(三目运算符)右结合
15=    +=   -=  *=  /= %=  >>=  <<=  &=  ^=  !=赋值运算符右结合
16throw抛出异常运算符右结合
17,逗号运算符左结合

根据C语言的优先级与结合性可知++*p++的结合过程有三步:

  • 自增运算符(后置)优先级最高,且为左结合,所以有:(p++)
  • 自增运算符(前置)与指针运算符优先级相同,但为右结合,所以有:(*(p++))
  • 最后有:(++(*(p++)))

3. 通过汇编代码判断执行结果

编译网站:Compiler Explorer

整体代码段:

其中对++*p++的汇编过程为:

1. (p++)操作:将p指针的地址后移四位。

2. (*(p++))操作:解析原来i的地址(因为p++这一式子返回的结果仍是p的原地址)。

例如:

# include <iostream>
using namespace std;
int main()
{
	int i = 0;
	int* p = &i;
	cout << p << endl;
	cout << p++ << endl;
	return 0;
}

执行结果为:

00000053456FF674
00000053456FF674 

3. (++(*(p++)))操作:对 i 地址上的值进行了加一操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1100529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

隐写术--python隐写

0x00 背景 何为隐写术&#xff1f; 隐写术是一类可以隐藏自己写的一些东西的方法&#xff0c;是一门关于信息隐藏的技巧与科学。指的是采取一些不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容的方法。 可参考 一文让你完全弄懂Stegosaurus - 知乎 本文要…

机械设计中的结构要素、基本要求和准则

机械结构设计的任务是依据设计任务在总体设计构想的基础上&#xff0c;确定的原理方案&#xff0c;绘制出具体的结构图&#xff0c;以实现设计所要求的功能。设计的过程是将抽象的工作原理具体化为某类构件或零部件&#xff0c;包含确定结构件的材料、形状、尺寸、公差、热处理…

机器学习绪论

目录 第1关&#xff1a;什么是机器学习 相关知识 题目答案 第2关&#xff1a;机器学习的常见术语 相关知识 假设空间 归纳偏好 题目答案 第3关&#xff1a;机器学习的主要任务 相关知识 分类 回归 聚类 题目答案 第1关&#xff1a;什么是机器学习 相关知识 相信…

给你一个文件夹,统计其下面的文件数量,包括子文件夹下面的文件

对于统计一个文件夹下面的文件的数量&#xff0c;大家第一反应肯定是递归调用来实现&#xff0c;现在有这么一个目录结构&#xff1a;root1和root2下面各有一个文件file1.txt和file2.txt&#xff0c;所以最终统计出来的文件数量应该是3 我们先看看递归实现&#xff1a; public …

Plant Commun | 正交组、系统转录组和CUT-Tag发掘植物保守冷响应因子BBX29及其靶基因

植物以固着的方式生活&#xff0c;但它们并不完全被动&#xff0c;许多温带植物通过预暴露于非冻结低温来增加它们的抗冻性&#xff0c;这种适应性过程被称为冷驯化(CA)。越来越多的证据表明&#xff0c;低温下的许多生理和代谢变化是由于CA诱导的冷反应(COR)基因的表达。C-重复…

Android 远程调用服务之 AIDL

目录 一、AIDL 是什么&#xff1f;二、为什么要使用 AIDL&#xff1f; 1、使用 AIDL 是为了跨进程调用第三方服务&#xff1f; 2、使用 AIDL 是为了向第三方服务传输数据/参数&#xff1f; 3、使用 AIDL 是为了获取第三方服务直接或者异步返回的数据&#xff1f;三…

Linux性能优化--性能工具:磁盘I/O

6.0 概述 本章介绍的性能工具能帮助你评估磁盘I/O子系统的使用情况。这些工具可以展示哪些磁盘或分区已被使用&#xff0c;每个磁盘处理了多少I/O,发给这些磁盘的I/O请求要等多久才被处理。 阅读本章后&#xff0c;你将能够&#xff1a; 确定系统内磁盘I/O的总量和类型(读/写…

浅谈智能照明控制系统应用在城市轨道交通

叶根胜 江苏安科瑞电器制造有限公司 江苏江阴 214405 摘要&#xff1a;在传统的城市轨道交通设计方面&#xff0c;照明设计方案具有一定的弊端。随着计算机技术的发展&#xff0c;智能化技术渐渐步入人们的生活并成为主流&#xff0c;故在城市轨道交通中应用新型的照明控制设…

基于关联规则的多样化推荐技术应用研究

摘要 目录 第二章 相关理论介绍 2.2.1 当前常用推荐技术 关联规则推荐 2.3.1 关联规则相关概念

【java学习—七】Object类(36)

文章目录 1. 概念2. Object类中的主要方法 1. 概念 Object 类是所有 Java 类的根父类如果在类的声明中未使用 extends 关键字指明其父类&#xff0c;则默认父类为Object 类 public class Person {...}等价于&#xff1a;public class Person extends Object {...}例&#xff1…

新加坡服务器托管

新加坡是一个小而繁荣的国家&#xff0c;是东南亚唯一一个发达国家。它地理位置好&#xff0c;毗邻马来西亚和印度尼西亚&#xff0c;新加坡是一个拥有先进科技和强大经济的国家&#xff0c;主要以制造业、金融、旅游和航运为主&#xff0c;拥有先进的经济和现代化的基础设施&a…

计算机操作系统-第九天

1、虚拟机 传统计算机的特点&#xff1a;一台物理机器只能运行一个操作系统 虚拟机的特点&#xff1a; 使用虚拟化技术&#xff0c;将一台物理机器虚拟化为多台虚拟机器&#xff08;Virtual Machine&#xff0c;简称VM&#xff09;每个虚拟机都可以独立运行一个操作系统 虚拟…

大数据学习(12)-join优化common join

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博>主哦&#x…

数据结构知识点总结

一、常见的数据结构 数组&#xff0c;栈&#xff0c;队列&#xff0c;链表&#xff0c;散列表&#xff0c;二叉树&#xff0c;堆&#xff0c;跳表&#xff0c;图&#xff0c;树。 1. 数组&#xff1a; 数组的元素在内存中存储是连续存放的&#xff0c;占有连续的存储单元&am…

AWS S3加密

Hello大家好&#xff61; 在本课时我们将讨论S3加密相关的内容。 S3加密相关是认证考试的一个重要的主题考点&#xff0c;您需要了解亚马逊S3的几种不同类型的加密方式。| 首先是静态数据的加密&#xff0c;静态数据加密是指数据存储在亚马逊S3 数据中心的磁盘上时&#xff0…

Excel文档名批量翻译不求人

在我们的日常工作中&#xff0c;经常需要处理大量的文件&#xff0c;包括Excel文档。有时候&#xff0c;我们需要对文件名进行修改或者翻译&#xff0c;以便更有效地进行文件管理和数据统计。那么&#xff0c;如何高效地翻译Excel文档名呢&#xff1f;下面是一个实用的方法。 首…

感测型离子风机在线实时监测

感测型离子风机在线实时监测静电是指通过安装静电监测器和数据采集设备&#xff0c;对离子风机所处环境的静电情况进行实时监测和数据采集&#xff0c;以便及时发现并解决静电问题。 感测型离子风机在线实时监测静电可以实现以下功能&#xff1a; 实时监测离子风机所处环境的静…

【FreeRTOS】【STM32】06.1 FreeRTOS的使用1(对06的补充)

前后台系统(裸机) 裸机又称前后台系统&#xff0c;在一个while中不停循环处理各个task。 中断服务函数作为前台程序 大循环while(1)作为后台程序 多任务系统 通过任务调度的方式&#xff0c;执行各个任务&#xff0c;优先级高的先执行&#xff0c;执行完了释放CPU使用权&am…

智慧工地管理系统(Smart site management system)源码

智慧工地管理系统是面向建筑工程施工企业提供的工地智能交互平台&#xff0c;基于云计算、物联网、人工智能等技术的应用&#xff0c;对现场人员、材料、机械、质量、安全等进行高效管控&#xff0c;以实现项目管理人员对现场的实时把控、及时预警、精准决策&#xff0c;从而为…