表达式 *p++ 和 ++*p 的工作方式有何不同

2023-12-22

#include<stdio.h>
int main()
{
    int a[2]={10,4};
    int *k;
    int *j; 
    j=a;
    k=j; 
    printf("j=%d,k=%d\n\n",*j,*k);
    *j++;
    ++*k;
    printf("j=%d,k=%d",*j,*k);
    return 0;
} 

输出是:

j=10 k=10 j=4 k=11

我认为它应该有相同的结果,但事实并非如此。 我想问一下是什么造成了这种差异。我不明白其背后的原因。


您需要挖掘运算符优先级表。

*p++被评估为*(p++)

++*p被评估为++(*p)

第二个是由于前缀++与指针取消引用具有相同的优先级* so 关联性(对于这些操作员来说是从右到左)开始发挥作用。

为了完整起见,*(p++)取消引用当前值p, and p语句完成后加一。++(*p)指向的数据加 1p.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表达式 *p++ 和 ++*p 的工作方式有何不同 的相关文章

  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names

随机推荐

  • Log4Net RollingFileAppender 生成重复日志

    我有一个在单个服务器上运行的 WCF 服务 使用 Log4net 通过 INFO 和 WARN 级别日志条目跟踪使用情况 使用具有以下非常标准配置的 RollingFileAppender
  • 使用 FileUpload 控件一次将多个图像保存到数据库

    我正在一家公司博客网站上工作 当用户发布帖子时 他们可以将计算机中的图像添加到帖子中 我使用 FileUpload 控件来执行此操作 效果很好 但是 我正在尝试更改功能以允许用户在一篇文章中选择和上传多个图像 但我遇到了一些问题 我已将 允
  • ASP.NET MVC5 每个 Razor 页面首次加载时非常慢

    这与以下情况下的延迟体验不同 第一个请求到达 但这是每次第一次访问基于 Razor 的视图时都会遇到的延迟 可能需要一两秒 对该视图的所有后续请求都非常快 即使对于不执行任何类型的编程工作 例如访问数据库等 的简单视图 也会发生这种情况 我
  • 在添加另一个视图之前检查布局膨胀器中是否存在视图

    在我的 android 项目中 我动态地将表单添加到我的线性布局中 然后在使用按钮完成后销毁它们 但是 当我单击 添加按钮 时 它会无限添加更多表单 尽管我一次只想要一个 我如何检查我的 LinearLayout 帐户 是否已添加到视图中或
  • Elasticsearch / lucene 高亮

    我正在使用 ElasticSearch 来索引文档 我的映射是 mongodocid boost 1 0 store yes type string fulltext boost 1 0 index analyzed store yes t
  • ListBox 中的“Items.Clear()”后“SelectedIndexChanged”未触发

    对于列表框 选择模式设置为 一 我希望跟踪是否有选定的项目或没有选定的项目 为此 我订阅了 SelectedIndexChanged 的 方法并检查 SelectedIndex 是否为 1 但是 我注意到调用 Items Clear 后该事
  • 在 ExtJS 中突出显示/选择网格行

    我是 Ext JS 的新手 我正在开发一个网格面板 当我选择 单击任何行时 与所选行相关的某些数据将显示在网格下方的面板中 此外 当加载窗口时 默认情况下应选择 突出显示第一个窗口 目前网格和面板已正确显示 即使与所选行相关的数据也会显示在
  • Angular2 FileSaver.js

    我将 FileSaver js 与 Angular 2 一起使用 效果很好 但是 我在构建中遇到语义错误 错误 TS2304 找不到名称 saveAs 我正在使用 Angular 2 种子并将库添加到我的 project config 中
  • Apache Ivy:本地ivy缓存和本地存储库之间的区别

    默认情况下 ivy 在你的目录下安装了一个 本地缓存
  • iOS是静态框架还是动态框架?

    这可能听起来像一个愚蠢的问题 但如果您有第三方 Party framework 文件 您能判断它是静态还是动态吗 我的意思是 如果你往里面看 它们看起来有什么不同吗 两者都可以 然而 只有 iOS8 才允许应用程序包中使用动态框架 找出答案
  • WPF DependencyObject 调用线程异常

    我有以下代码 它创建一个临时文件夹 并使用 FileSystemWatcher 轮询添加到 Location 属性上的文件夹中的文件 并将它们添加到列表中 Pastebin 上的 Scratchdisk cs http pastebin c
  • Javascript 动态创建函数列表

    我有一块JavaScript我想要创建函数列表的代码 所有的函数都会被放入字典中d d a 会给我这个功能function console log a and d b 会给我这个功能function console log b 等等 这是我
  • 图灵机的时间复杂度和空间复杂度

    我认为图灵机的时间复杂度和空间复杂度的定义是相同的 我无法区分 它们之间 请帮我 谢谢 对于图灵机 时间复杂度是当机器根据某些输入启动时磁带移动的次数的度量 空间复杂度是指机器运行时写入磁带的单元数 The time complexity
  • 获取 Adob​​e Air 中的当前操作系统

    我正在使用 Adob e Flex Air 制作一个应用程序 我想知道是否有任何方法可以获取 Air 应用程序运行的操作系统 Use 能力 http livedocs adobe com flex 3 langref flash syste
  • “活动(调试)”与“调试”

    Visual Studio 调试器 C 调试配置的项目设置 视觉工作室2010 http msdn microsoft com en us library 2kf0yb05 aspx 视觉工作室2008 http msdn microsof
  • 为什么我的 Spring ContextRefreshedevent 被调用两次?

    我注册了一个 Spring ApplicationListener bean 来侦听 ContextRefreshed 事件 但出于某种奇怪的原因 我得到two致电onApplicationEvent ContextRefreshedEve
  • 如何确定一个数字中的所有设置位是否也在另一个数字中设置?

    给定 2 个二进制字符串a and b相同长度 例如111000 and 110000 是否可以检查是否所有设置位b也设置在a使用按位运算 在上面的例子中 b 110000在位置 1 和 2 从左到右 有两个设置位 这些位也设置在a 111
  • 计算价格并显示在 WooCommerce 产品单页上的价格下(简单价格、可变价格)

    我计划在我的 WooCommerce 产品页面上显示所有产品的新价格 这是每月的分期付款价格 我需要以低于正常价格 可变价格和简单价格 的价格显示此内容 如下所示 0 利息分期付款 3 093 卢比起 其中 3 093 卢比是新价格 这是我
  • PHP NTLM身份验证+soap客户端

    我遇到了一个需要实现受 NTLM 身份验证保护的 Web 服务的项目 我通过 PHP 尝试过SoapClient client new SoapClient http hostname com webservice array cache
  • 表达式 *p++ 和 ++*p 的工作方式有何不同

    include