C++:'cout << 指针 << ++pointer' 生成编译器警告

2023-11-25

我这里有一个C++学习演示:

char c = 'M';
short s = 10;
long l = 1002;
char * cptr = &c;
short * sptr = &s;
long * lptr = &l;
cout << "cptr:\t" << static_cast<void*>(cptr) << '\n';
cout << "cptr++:\t" << static_cast<void*>(++cptr) << '\n';
cout << "sptr:\t" << sptr << '\n';
cout << "sptr++:\t" << ++sptr << '\n';
cout << "lptr:\t" << lptr << '\n';
cout << "lptr++:\t" << ++lptr << '\n';

cout << c << '\t' << static_cast<void*>(cptr) << '\t' << static_cast<void*>(++cptr) << '\n';
cout << s << '\t' << sptr << '\t' << ++sptr << '\n';
cout<< l << '\t' << lptr << '\t'<< ++lptr << '\n';

编译器警告:

image

谁能向我解释一下吗?如何修复它?


从 C++17 开始,代码是正确的.

C++17 之前a 的操作数的求值<<链没有排序,因此代码导致了未定义的行为。

编译器警告表明您没有在 C++17 模式下进行编译。要修复它,您可以:

  • 以 C++17 模式编译,或
  • 分开<<链成多个cout <<没有的地方的陈述x and ++x在同一个声明中。

Note:截至目前,所有版本的 g++ 似乎都存在 bug,并且没有正确实现这些排序要求,请参阅这个线程更多示例。这些警告可以被视为指示编译器错误;它们不仅仅是虚假的警告。

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

C++:'cout << 指针 << ++pointer' 生成编译器警告 的相关文章

  • 在动态事件处理程序中引用“this”

    在我的 myClass 类中 我使用 Reflection Emit 为 myClass 类成员之一动态编写事件处理程序 我已经成功地做到了这一点 现在 我想修改事件处理程序以调用 myClass 类中的实例方法之一 但是 我无法弄清楚如何
  • C# 创建函数队列

    我写了一个名为 QueueManager 的类 class QueueManager Queue functionsQueue public bool IsEmpty get if functionsQueue Count 0 return
  • 起订量要求?违背了目的?

    是否需要虚拟化您想要模拟的所有属性访问器就违背了模拟的目的 我的意思是 如果我必须修改我的对象并虚拟化我想要模拟的每个访问器 我难道不能继承我的类并自己模拟它吗 你的问题非常有效 但如果你仔细想想 没有其他方法可以模拟课程 如果你采用一个接
  • SharpZipLib - 将文件夹/目录添加到 zip 存档

    通过示例 我很好地掌握了如何提取 zip 文件 几乎在每个示例中 识别 ZipEntry 是否为目录的方法如下 string directoryName Path GetDirectoryName theEntry Name string
  • 为什么这个函数指针赋值在直接赋值时有效,但在使用条件运算符时无效?

    本示例未使用 include 在 MacOS10 14 Eclipse IDE 上编译 使用 g 选项 O0 g3 Wall c fmessage length 0 假设这个变量声明 int fun int 这无法通过 std touppe
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • 存储过程上的 OdbcCommand - 输出参数上出现“未提供参数”错误

    我正在尝试执行存储过程 通过 ODBC 驱动程序针对 SQL Server 2005 但收到以下错误 过程或函数 GetNodeID 需要参数 ID 但未提供该参数 ID 是我的过程的 OUTPUT 参数 在存储过程中指定了一个输入 mac
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 防止GDB中的PLT(过程链接表)断点

    在最新版本的 GDB 中 在库函数调用上设置断点会导致多个实际断点 调用过程链接表 PLT 实际的函数调用 这意味着当调用库函数时 我们每次都会经历两次中断 在以前的 GDB 版本中 只会创建 2 因此您只能得到一次中断 那么问题来了 是否
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • “int i=1,2,3”和“int i=(1,2,3)”之间的区别 - 使用逗号运算符的变量声明[重复]

    这个问题在这里已经有答案了 int i 1 2 3 int i 1 2 3 int i i 1 2 3 这些说法有什么区别 我无法找出任何具体原因 Statement 1 Result Compile error 运算符的优先级高于 运算符
  • 纯虚函数可能没有内联定义。为什么?

    纯虚函数是那些虚函数并且具有纯说明符 0 第 10 4 条第 2 款C 03 的内容告诉我们什么是抽象类 顺便说一句 如下 注意 函数声明不能 同时提供纯说明符和定义 尾注 示例 struct C virtual void f 0 ill
  • 如何获取 QIcon 的文件/资源​​路径

    假设我做了这样的事情 QIcon myIcon resources icon ico 我稍后如何确定该图标的路径 例如 QString path myIcon getPath 问题是 没有getPath 会员 我找不到类似的东西 但肯定有办
  • C++ [Windows] 可执行文件所在文件夹的路径[重复]

    这个问题在这里已经有答案了 我需要访问一些文件fstream在我的 Windows 上的 C 应用程序中 这些文件都位于我的exe文件所在文件夹的子文件夹中 获取当前可执行文件的文件夹路径的最简单且更重要的 最安全的方法是什么 Use 获取
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255
  • C# 粘贴到文本框时检查剪贴板中的字符

    有没有一些方法可以在粘贴到文本框 C 之前仅检查剪贴板中的字符 Ctrl V 和右键单击 gt 粘贴 但不使用 MaskedTextbox 在文本框文本更改中添加规则以仅接受数字 例如 private string value privat
  • 无法使 Polly 超时策略覆盖 HttpClient 默认超时

    我正在使用 Polly 重试策略 并且正如预期的那样 在重试过程中HttpClient达到 100 秒超时 我尝试了几种不同的方法来合并 Polly 超时策略 将超时移至每次重试而不是总计 但 100 秒超时仍然会触发 我读过大约 5 个
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec

随机推荐

  • 角度5:如何等待我的服务完成然后继续下一个任务?

    我的 angular5 应用程序中有一个组件 名为 product list component ts 在此组件中 我有一个构造函数 它调用 REST API 产品 服务 ts getAllProductsFromACategory cat
  • Kivy:未知类 错误代码

    这是main py from kivy app import App class WeatherApp App pass if name main WeatherApp run 天气 kv 是 AddLocationForm
  • HttpClient 内存使用量激增且响应较大

    我正在开发一个控制台应用程序 它获取视频数据的端点列表 发出 HTTP 请求 并将结果保存到文件中 这些是相对较小的视频 由于我无法控制的问题 其中一个视频是very大 145 分钟而不是几秒 我看到的问题是 在调用该请求后 我的内存使用量
  • 防止使用 Enter 键提交表单

    我刚刚写了这个漂亮的小函数 它适用于表单本身 form keypress function e if e which 13 var tagName e target tagName toLowerCase if tagName textar
  • 指定时,package.json 中的“proxy”必须是字符串

    我想在我的反应客户端中有代理 我的 package json 包含 scripts start react scripts start build react scripts build test react scripts test ej
  • 您如何看待 Postgres 和 Firebird 数据库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在尝试在 postgr
  • makefile 错误:未定义对 main 的引用

    我正在尝试使用 make 编译我的代码 通常我这样编译我的代码 mipsisa32r2el timesys linux gnu g o testing I usr include libxml2 L develop xc4 rootfs p
  • Video.js 播放时进入全屏

    我已经搜索了很长时间 但仍然没有找到解决我的问题的有效解决方案 我似乎无法让视频播放器进入全屏 该 API 确实有很多示例 但似乎都不起作用 我当前正在处理的页面上包含的 jQuery 版本是 1 8 2 另外 我正在使用 parallax
  • 如何在 jQuery 变量中操作 HTML?

    我正在尝试操作存储在 jQuery 变量中的 HTML 我想在将变量写入文档之前进行此操作 所以 我有一个变量定义为 var sighting div span class feed name span div 我想把 hello worl
  • 如何更改 JTextArea 中的文本位置

    通常 在 JTextArea 中 文本从左上角开始 我希望它位于左下角 你怎么能这样做呢 如果我的笔迹无法辨认 请见谅 你可以锚定一个JTextArea to the BorderLayout PAGE END容器的位置并允许文本向上滚动
  • 在 RedHat 7.9 上的 systemd 服务 ExecStart 中使用 && 执行多个命令

    我在 Red Hat Enterprise Linux Server 7 9 Maipo 上有这个 systemd 服务 Unit Description EUM Server Service PartOf eum service Star
  • Visual Studio 签名失败(signtool.exe 错误)

    今天下午接受了一个较小的 Windows 更新后 我发现我无法再对我的 Visual Studio 应用程序进行签名构建 深入研究这个问题 我发现了signtool exe程序 它位于一个不起眼的目录 C Program Files x86
  • 每个端点的不同服务行为

    情况 我们正在某些 WCF 服务上实施不同类型的安全性 客户端证书 用户名和密码以及匿名 我们有 2 个 ServiceBehaviorConfigurations 一种用于 httpBinding 一种用于 wsHttpBinding 我
  • 有没有办法可靠地检测CPU核心总数?

    我需要一种可靠的方法来检测计算机上有多少个 CPU 核心 我正在创建一个数值密集型模拟 C 应用程序 并希望创建最大数量的运行线程作为核心 我已经尝试了互联网上建议的许多方法 例如Environment ProcessorCount 使用W
  • 对路径的访问被拒绝 - File.Move 失败,但 File.Delete 有效

    我正在尝试执行一个简单的File Move操作但我得到 System UnauthorizedAccessException 异常 对路径的访问被拒绝 据我所知 没有任何东西正在使用我试图移动的文件 包含文件夹也已关闭 我可以通过文件资源管
  • 以编程方式设置 iPhone 模拟器位置

    我刚刚更新到 XCode 4 2 发现了一个很酷的功能 可以让我手动设置设备位置 有谁知道如何以编程方式完成同样的事情 我想在一些单元测试中设置位置 以下 AppleScript 将允许您设置 iOS 模拟器的位置 应该可以将这种脚本集成到
  • 将 javascript 数组传递给 servlet

    我已经看过有关此主题的先前问题 但我的问题尚未解决 我将数组从 javascript 传递到 servlet JavaScript 代码 var action new Array function getProtAcionValues ro
  • prism/mvvm:将列绑定到 DataGrid

    我正在使用标准的 NET DataGrid 如下所示
  • 将二维数组表示为一维数组[重复]

    这个问题在这里已经有答案了 可能的重复 实现矩阵 使用数组的数组 2D 还是一维数组 哪个更有效 二维数组与一维数组的性能 有一天 我正在查看我朋友的一个分子动力学代码库 他将一些二维数据表示为一维数组 因此 他不必使用两个索引 而只需要跟
  • C++:'cout << 指针 << ++pointer' 生成编译器警告

    我这里有一个C 学习演示 char c M short s 10 long l 1002 char cptr c short sptr s long lptr l cout lt lt cptr t lt lt static cast