在需要表达式的地方放置一个大括号括起来的块的 C++ 语法是什么?

2023-11-21

我遇到了这个奇怪的 C++ 程序。

#include <iostream>
using namespace std;
int main()
{
  int a = ({int x; cin >> x; x;});
  cout << a;
}

谁能解释一下发生了什么事吗?这个构造叫什么?


它将用户输入值分配给a并打印出来。它是通过使用来完成的Statement Expression.

语句表达式是gnu gcc 编译器扩展并且不受 C/C++ 标准支持。因此,任何使用语句表达式的代码都不符合标准且不可移植。

IBM XL C/C++ v7.0 还支持语句表达式,其文档恰当地解释了它们:

语句表达式:

复合语句是用大括号括起来的语句序列。在 GNU C 中,括号内的复合语句可以作为表达式出现在所谓的Statement expression.

         .--------------.
         V              |
>>-(--{----statement--;-+--}--)--------------------------------><

语句表达式的值是整个构造中出现的最后一个简单表达式的值。如果最后一条语句不是表达式,则该构造的类型为 void 并且没有值。

始终通过在 GCC 中选择标准来编译代码:使用选项之一-ansi, -std=c90 or -std=iso9899:1990, -std=c++03, -std=c++0x;要获得标准所需的所有诊断,您还应该指定-pedantic (or -pedantic-errors如果您希望它们是错误而不是警告)。

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

在需要表达式的地方放置一个大括号括起来的块的 C++ 语法是什么? 的相关文章

  • 有没有办法将所有内容都包含在 dbcontext 中?

    当查询一个DbContext急切加载时 需要Include Navigation 为了填充导航属性 然而 在某些情况下 我想简单地Include all实体的导航属性 有没有办法做到这一点 或者有办法做到这一点 我假设你可以反思 但我宁愿避
  • C++,多语言/本地化支持

    向 C 程序添加多语言支持的最佳方法是什么 如果可能 应该从包含键值对 WelcomeMessage Hello s 之类的纯文本文件中读取语言 我想到了添加一个 localizedString key 函数来返回加载的语言文件的字符串 有
  • strtok() 和空字段

    我正在将一些 C 结构序列化为字符串 然后将其反序列化strtok 但不幸的是 strtok 不检测空字段 例如 1 2 4 有没有替代功能 在linux上有strsep http www mkssoftware com docs man3
  • lambda 表达式到函数指针的转换

    这是这个问题的后续问题 Lambda 如何作为参数传递 https stackoverflow com questions 3321283 c0x lambda how can i pass as a parameter 据推测 MSDN
  • 用C#发送USSD?

    我想编写一个在 Windows Mobile 6 上运行的简单 C 应用程序 它可以发送 USSD 消息 有没有任何图书馆可以帮助我做到这一点 或者是否有任何示例解释如何使用线路发送USSD http msdn microsoft com
  • 如何使用 DesignData 帮助开发 Metro 应用程序?

    我一直在 Windows Phone 应用程序中愉快地使用 DesignData 我希望使用它来帮助在 VS2012 Blend for VS 中的 Metro 风格应用程序中可视化设计 我已经尝试过希望显而易见的方法
  • const_iterators 更快吗?

    我们的编码指南更喜欢const iterator 因为它们比正常的要快一点iterator 当您使用时 编译器似乎会优化代码const iterator 这真的正确吗 如果是的话 内部到底发生了什么使得const iterator快点 编辑
  • 有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录?

    有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录 我们正在使用我们自己的抽象 我不希望在使用 Serilog 时来自 Hangfire 记录器的所有额外噪音 INIT call under web project na
  • WCF 客户端返回空数组 - XML 响应似乎正常

    我正在尝试为我们的 Intranet 上托管的 Web 服务创建一个简单的 WCF 客户端 C 使用 Fiddler 和 SoapUI 我可以看到请求和响应似乎正常 但是当我运行代码时返回一个空数组 我会尝试只粘贴相关的行 但会是很多东西
  • dlopen 或 dlclose 未调用信号处理程序

    我在随机时间内收到分段错误 我注册了信号 但发生分段错误时未调用信号处理程序 include
  • C++ 为非虚方法指定初始化

    我有 a h 如下所示 class A public void doSomething 0 然后我有 b h 如下所示 include a h class b public A public void doSomething 我只是想通过尝
  • 如何设置cookie值?

    我正在执行以下操作来设置 cookie 值 HttpCookie mycookie new HttpCookie mycookie mycookie Value value1 Case sensitivity mycookie Expire
  • 将数字 n 拆分为 k 个不同数字的总和

    我有一个数字 n 我必须将它分成 k 个数字 使得所有 k 个数字都是不同的 k 个数字的总和等于 n 并且 k 最大 例如 如果 n 为 9 则答案应为 1 2 6 如果 n 为 15 则答案应为 1 2 3 4 5 这就是我尝试过的 v
  • 访问结构向量

    我有一个结构 struct OutputStore int myINT string mySTRING 如果我创建一个 OutputStore 类型的数组 如下所示 OutputStore OutputFileData new Output
  • 如何在 .NET 中自定义 JSON 枚举的反序列化?

    我有以下示例 C 代码 它是使用 svcutil exe 应用程序从 xsd 自动生成的 DataContract public enum Foo EnumMember Value bar Bar 1 EnumMember Value ba
  • 向窗口句柄发送消息

    我尝试使用 sendmessage 将消息从我的 C 应用程序传递到 C 我的c 代码是这样的 int tmain int argc TCHAR argv COPYDATASTRUCT cpd cpd dwData 0 LPCWSTR st
  • 我的 Opencv 应用程序处理速度非常慢

    我正在构建一个 OpenCV 应用程序 它从相机捕获视频 并在删除背景后将其覆盖在另一个视频上 我无法达到合理的速度 因为它以大约 1 fps 的速度播放输出 而我的背景去除以 3 fps 的速度工作 有没有办法以正常速度显示背景视频并以
  • 在运行时将项目添加到 ToolStrip

    您好 我有一个带有 收藏夹 菜单的 ToolStripMenu 我想在运行时在 WinForms 应用程序中添加子项目 我有一个 datagridview 右键单击它会显示一个包含 添加到收藏夹 选项的上下文菜单 当该事件被触发时 我想使用
  • 恐怖分子已弃用

    正在接听另一个问题 https stackoverflow com q 11830514 1468366 我偶然发现了man page http linux die net man 3 herror一个名为的函数herror 看起来很像pe
  • 如何使用 __m128i 执行元素左移?

    我发现 SSE 移位指令只能在所有元素上移位相同的量 mm sll epi32 mm slli epi32 这些会移动所有元素 但移动量相同 http software intel com sites products documentat

随机推荐

  • 应用程序第一次升级 sqlite 数据库时崩溃

    当第一次更新 sqlite 数据库时 我的应用程序遇到崩溃 重新加载应用程序 从此一切正常 我猜这与 onUpgrade 函数有关 我似乎无法找到问题出在哪里 非常感谢任何建议 提前致谢 数据库助手 public class Databas
  • 如何在 C# 中处理 JSON?

    是否有一个简单 优雅的解析器来处理 C 中的 JSON 实际序列化 反序列化为 C 对象怎么样 JSON Net是一个相当不错的图书馆
  • 如何根据 pandas python 中的特定列合并两个数据框?

    我必须合并两个数据框 df1 company standard tata A1 cts A2 dell A3 df2 company return tata 71 dell 78 cts 27 hcl 23 我必须将两个数据帧统一为一个数据
  • 在对等方关闭的 TCP 套接字上写入

    我有一个客户端 服务器应用程序 其中每一端都通过 TCP 套接字与另一端进行通信 我正确地建立了连接 然后在客户端将任何数据写入套接字之前使服务器崩溃 我看到的是第一个write 尝试 客户端 成功 它返回实际写入的字节数 而以下返回 如我
  • 如何为所有派生类型部分特化类模板?

    我想部分专门化一个我无法更改的现有模板 std tr1 hash 对于基类和所有派生类 原因是我使用了奇怪的重复模板模式来实现多态性 并且哈希函数是在 CRTP 基类中实现的 如果我只想部分专门化 CRTP 基类 那么很简单 我可以编写 n
  • 在多个集合上执行事务时,MongoDB Atlas 出错(代码 8000)

    我正在尝试从 Mongo DB Node JS 驱动程序在 Mongodb Atlas M0 实例上执行事务 如所述here 并且我收到以下错误 code 8000 codeName AtlasError errmsg internal a
  • OpenCV Python:绘制 minAreaRect (旋转矩形未实现)

    是否有任何辅助方法来绘制由返回的旋转矩形cv2 minAreaRect 大概是作为 x1 y1 x2 y2 angle cv2 矩形 不支持角度 由于返回的元组不是 RotatedRect 类 因为它似乎没有在 Python 绑定中实现 所
  • 添加多个 ClusterManager 到 Google 地图

    我正在尝试为 Google Map 使用两个 ClusterManager 但我只能添加一个 clustermanager 及其项目单击事件 googleMap setOnMarkerClickListener mClusterManage
  • TChan 写入是否已集成到 Haskell STM 中?

    如果 STM 事务失败并重试 是否会调用writeTChan重新执行 以便最终得到两次写入 或者 STM 仅在事务提交时才实际执行写入 即 这个针对睡觉理发师问题的解决方案是否有效 或者如果交易在enterShop第一次失败 import
  • 使用 CSS 浮动 DIV 之间的垂直边框

    我有以下 HTML 结构 div div Some text goes here div div Different text goes here div div class clear div div 我还有以下 CSS parent w
  • VB.Net 变量声明:键入还是不键入?

    在 VB Net 中 声明字符串的常用方法是 Dim helloWorld As String Hello World 但是 您也可以使用动态变量 例如 Dim helloWorld Hello World 两者最终都会是同一件事 但最佳实
  • 我的随机梯度下降实现正确吗?

    我正在尝试开发随机梯度下降 但我不知道它是否100 正确 我的随机梯度下降算法生成的成本有时与 FMINUC 或批量梯度下降生成的成本相差甚远 虽然当我将学习率 alpha 设置为 0 2 时 批量梯度下降成本会收敛 但我被迫将学习率 al
  • 循环phpmailer

    当我发送电子邮件时 我收到两封电子邮件 但它应该将电子邮件发送到各自的电子邮件 乱跳问题 array values Array 0 gt Array 0 gt uname1 1 gt fullname1 2 gt email 1 1 gt
  • 运行时获取DLL路径

    我想得到一个dll s其代码中的目录 或文件 路径 不是程序的 exe文件路径 我尝试了一些我发现的方法 GetCurrentDir 获取当前目录路径 GetModuleFileName 获取可执行文件的路径 那么我怎样才能找到代码在哪个d
  • 将值传递给 loadURL - Android

    是否可以将值传递给 webView loadUrl 中提到的 URL 像这样的东西 webView loadUrl file android asset www index html value value 或者有什么方法可以将 Java
  • 他们是如何做到的呢?主屏幕上的对话框

    我正在编写一个 Android 应用程序 我想在主屏幕上放置一个对话框或视图 以便用户可以输入文本而无需跳转到我的完整应用程序 我似乎无法让它发挥作用 如果我呈现一个对话框 即使在透明活动中 我的应用程序就会启动 如果您不知道我在说什么 请
  • 什么时候最适合使用 Python 中的类?

    我对 python 和一般编程都很陌生 所以非常感谢对这一点的任何澄清 例如 在以下代码中 Using a class class Monster object def init self level damage duration pri
  • 分割给定字符串并准备 case 语句

    Table 表名 create table table name given dates timestamp set name varchar 插入记录 insert into table name values 2001 01 01 20
  • 如何让 Xcode 使用 clang 的替代版本?

    我如何设置 Xcode 以使用由以下人员分发的 clangllvm org而不是苹果发货的那个 如果我下载clang 二进制文件并安装到 usr local然后将我的编译器设置为Other gt usr local bin clang在 X
  • 在需要表达式的地方放置一个大括号括起来的块的 C++ 语法是什么?

    我遇到了这个奇怪的 C 程序 include