强制转换为“void”到底有什么作用? [复制]

2023-12-30

经常使用的语句,例如(void)x;允许抑制有关未使用变量的警告x。但是如果我尝试编译以下内容,我会得到一些我不太理解的结果:

int main()
{
    int x;
    (short)x;
    (void)x;
    (int)x;
}

用 g++ 编译它,我收到以下警告:

$ g++ test.cpp -Wall -Wextra -o test
test.cpp: In function ‘int main()’:
test.cpp:4:13: warning: statement has no effect [-Wunused-value]
     (short)x;
             ^
test.cpp:6:11: warning: statement has no effect [-Wunused-value]
     (int)x;
           ^

所以我的结论是投射到void与转换为任何其他类型有很大不同,目标类型与decltype(x)或不同的东西。我对可能的解释的猜测是:

  • 这只是一个约定(void)x;但其他演员不会抑制警告。所有的陈述同样没有任何作用。
  • 这种差异在某种程度上与以下事实有关:void x;不是一个有效的语句short x; is.

如果有的话,哪一个更正确?如果没有,那么如何解释编译器警告的差异?


强制转换为 void 用于抑制编译器警告。这Standard https://cplusplus.github.io/CWG/issues/1054.html§5.2.9/4 中说,

任何表达式都可以显式转换为类型“cv void”。这 表达式值被丢弃。

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

强制转换为“void”到底有什么作用? [复制] 的相关文章

随机推荐

  • 使用Sql Server 2016的OPENJSON函数从Json文档中的多个数组元素中选择结果

    是否可以在 Sql Server 2016 中将来自多个数组元素的 json 文档的部分组合成单个结果 给定这个 json fruit types possible Apples Bananas Pears category Basic p
  • C# 控制电脑音量

    有没有办法在 C 中控制计算机的实际音量并将其显示在垂直轨迹栏中 我几乎已经尝试了一切 但一定有一些东西我错过了 Thanks 您是否尝试过使用winmm dll通过 p Invoke 库 这就是本文所推荐的 http www dreami
  • 测试 SQLite 触发器内的 COUNT()>X

    如何比较 SQLite 中触发器内的 COUNT 结果 到目前为止 这是我想出的代码 CREATE TRIGGER mytrigger BEFORE INSERT ON mytable BEGIN SELECT CASE WHEN SELE
  • Django 查询聚合同一字段中匹配实例的总和

    我有以下 Django 2 1 模型 class Sales models Model product name models ForeignKey Product category models ForeignKey Category s
  • 如何在kubernetes环境中使用spark配置beam python sdk

    TLDR 如何使用 environment type EXTERNAL 或 PROCESS 配置 Apache Beam 管道选项 描述 目前 我们在 Kubernetes 中有一个独立的 Spark 集群 如下this https sta
  • MySQL存储过程中的变量

    我遇到了这个简单存储过程的问题 我想保存LAST INSERT ID放在一个变量中 然后将其分配给下一个插入 DELIMITER CREATE PROCEDURE Adda Name varCHAR 45 Surrname varCHAR
  • 非空参数的方法引用?

    我正在读关于Java 8 特性 http www techempower com blog 2013 03 26 everything about java 8 而且我看到他们有方法引用 但是我没有看到当方法重载时如何指定哪个方法 有人知道
  • Google 图表图例 - 重叠文本

    我在页面中使用谷歌图表 但图例文本重叠 如下图所示 这是我的代码 var dataTable new google visualization DataTable dataTable addColumn date Data dataTabl
  • Symfony2:与非命名空间 SDK(特别是 PayPal)集成

    我创建了一个PaypalBundle并添加了贝宝商家 php sdk https github com paypal merchant sdk php to my composer json现在我有一个vendor paypal merch
  • 检查java中长操作的进位

    我正在对 long 类型的数字进行加 减 有没有办法确定此操作是否会设置理论进位 这应该做 Add two long s with overflow detection r s d public static long add final
  • Airflow:使用新计划从头开始重新运行 DAG

    背景故事 我每天都在运行 Airflow 作业 其中包含start date2019 年 7 月 1 日 收集的作业从第三方请求每天的数据 然后将该数据加载到我们的数据库中 成功运行作业几天后 我意识到第三方数据源每月只刷新一次数据 因此
  • centos上无法安装erlang

    在cent os上安装erlang时出现以下错误 错误 软件包 erlang crypto R16B03 0 2 el6 x86 64 erlang 解决方案 需要 libcrypto so 10 libcrypto so 10 64位 错
  • 如何在 Angular 1.5 组件中等待 UI Router Resolve 的承诺

    我正在使用 Angular 1 5 组件 我不知道如何通过 Resolve 获取数据 您能透露一些信息吗 Plunker https plnkr co edit 2wv4YWn8YQvow6FDcGV0 https plnkr co edi
  • Openlayers 3. 如何为功能制作tootlip

    现在我正在将我的项目从 openlayers 2 移动到 openlayers 3 不幸的是 我找不到如何显示功能的标题 工具提示 OL2中有一种风格叫graphicTitle 您能给我一些如何在 OL3 上实现工具提示的建议吗 这是 ol
  • 元素在类中没有匹配项

    我正在使用 Simple XML 框架 只是重命名了一些 XML 布局 但现在它们似乎不再起作用了 这是我的 XML
  • 将多个帧发送到AWS rekognition

    我正在尝试从我的网络摄像头将图片发送到 aws rekognition 以使用 python 检测坐在它前面的人的活动 为此 我每 5 秒拍一张照片并将其发送到 aws 但当我这样做时 他似乎总是发回有关我发送的第一帧的信息 cap cv2
  • 防止缓存 CSS 文件

    我正在使用 PHP 开发一个简单的网站 开发配置 WAMP 生产配置 LAMP 在测试时 我更改了 CSS 文件 但是当我重新加载页面时 我的浏览器 不确定 仍然使用旧的缓存 css 我做了一些谷歌搜索 发现了我已经尝试过的不同解决方案 在
  • Android开发字符串数组资源太大,导致Android应用程序崩溃!

    我有一个字符串数组资源 其中包含大约 1000 个药物名称
  • 在 PowerShell 中使用 WinSCP 仅下载新文件

    如何下载最新文件或某天发布的文件 导入包含以下内容的 CSV 文件Source and a 目的地柱子 需要检查路径是否存在 文件是否存在并且仅下载新文件 现在的脚本正在将所有文件移动到相应的文件夹 但是一旦我再次运行脚本 它不仅仅下载新文
  • 强制转换为“void”到底有什么作用? [复制]

    这个问题在这里已经有答案了 经常使用的语句 例如 void x 允许抑制有关未使用变量的警告x 但是如果我尝试编译以下内容 我会得到一些我不太理解的结果 int main int x short x void x int x 用 g 编译它