为什么这是未定义的行为?

2023-11-23

为什么以下给定表达式会调用未定义的行为?

int i = 5;
i = (i,i++,i) + 1 

我的问题受到Als的影响在这里提问


它不是未定义的。

在这里回答C,序列点和偏序

我认为这同样适用于 C++(这是我在看到该链接之前的回复):

逗号运算符引入了一个序列点(并在某种程度上限制了表达式必须计算的顺序 - 先左后右),因此:

  • 的两个修改i由序列点(第二个逗号)分隔。
  • 的修改i in i++通过序列点与其他所有内容分开。
  • 的修改i by = is not与最后一次出现的分开i在表达式中,但这没关系,因为我们可以访问i并在没有介入序列点的情况下修改它,前提是访问是“确定要存储的值”(5/4)。
  • 正如 Als 所说,实际上,只要每个人都有不编写代码的基本常识,该代码是否已定义行为并不重要;-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这是未定义的行为? 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • Python 3.2 中的暴力破解脚本

    我是编写代码的初学者 我从 Python 开始 因为它看起来最简洁 最容易上手 我目前使用的是 Python 3 2 现在我读了一些关于Python编码的在线书籍等等 我制作了一些小程序 仅此而已 但后来我想制作一个程序 可以暴力破解随机密
  • 获取 UIStackView 子视图的框架

    我在 IB 中创建了一个 UIStackView 其分布设置为 Fill Equally 我希望获取每个子视图的框架 但以下代码始终返回 0 0 0 0 class ViewController UIViewController IBOut
  • 每个浏览器的媒体查询

    我想根据浏览器调整输入字段的大小 我可以为每个浏览器编写媒体查询 以便在单独的浏览器上为输入字段设置单独的宽度 就像对于 mozilla 来说 它在 chrome 上将具有单独的宽度 而 Opera 则将具有单独的宽度 媒体查询 are m
  • 如何使用 kotlin android 更新我的 Recyclerview?

    我有一个显示数据的 Recyclerview 活动 现在我想更新我的RecyclerView一旦获得新数据 现在每次我关闭并重新打开我的应用程序时 都会显示新数据 但我希望它没有关闭更新我的观点 我试过这个 但什么都行不通 fun setu
  • Apache Spark 案例在不同列上具有多个 when 子句

    鉴于以下结构 val df Seq Color Shape Range Size map Tuple1 apply toDF color val df1 df withColumn Success when color lt gt whit
  • elasticsearch禁用词频评分

    我想更改 Elasticsearch 中的评分系统 以摆脱对某个术语多次出现的计数 例如 我想要 德克萨斯州 德克萨斯州 德克萨斯州 and texas 得出相同的分数 我发现这个映射 elasticsearch 说会禁用术语频率计数 但我
  • Django Rest框架序列化器排除深度为2的外键

    我制作了一个 api 它以 json 数据的形式返回一个对象 我正在使用 django rest framework 及其序列化器 使用资源 ModelResource 我排除了一些字段 例如名为 所有者 的属性 其中一个字段本身就是外键
  • 关于 Powershell 中的范围

    我正在学习 Powershell 中的范围并有一些问题 关于 本地范围 据我所知 本地范围始终是当前范围 因此 默认情况下 当我们创建一个项目 没有范围修饰符 时 例如一个变量 在某个范围内 让它是脚本或全局 相应的范围将是脚本 全局 所以
  • 将 NSNumberFormatter 的负数格式从 (xxx.xx) 更改为 -xxx.xx

    我想将我的 NSNumberformatter 从显示带括号的负数更改为将减号放在前面 或任何本地化标准 我假设我可以使用 setNegativeFormat 来做到这一点 但读了苹果如此详尽的文档 我还是摸不着头脑 设置负数格式 设置接收
  • 检测特定 div 及其所有子级之外的点击

    我一直在阅读以下内容 https css tricks com dangers stopping event propagation 我想以适当且安全的方式实施这一点 我想当我点击 div 之外的类时container那console lo
  • Haskell 中如何使用 $ 运算符柯里化函数应用?

    我正在学习 haskell 并且有点困惑函数应用运算符 curry 的用法 根据 GHC 的类型是 Main gt t a gt b gt a gt b 但我可以输入以下代码 Main gt map 2 2 2 2 4 0 4 0 1 0
  • 如何获取 ListItemClick 的值并将其传递给另一个活动

    我有一个 listView 里面有信息 当我单击一行时 它必须为我提供该所选行下的所有详细信息 在该选择行中我有图像 图像名称 价格等 因此 当我单击 listView 中的图像时 它必须填充所有信息 包括下一个活动中的图像 我尝试在我的
  • 如何在 HTML 表单中不传递空输入字段

    我有一个表单 其中包含我们公司每种产品的大约一百个输入 文本字段 该表格将在当天结束时填写 并注明所售出的每种产品的数量 如何让表单只传递相对较小的非空字段子集 我不是在寻找表单验证 用户可以在任何输入字段中输入或不输入值 但是 我只希望输
  • 查找行中特定值的最后一次出现

    我有一张桌子 记录着梦幻足球联赛的比分 得分最低的一周不计入总分 我可以使用以下方法找到最低分 min function min B2 R2 我可以使用以下命令找到第一个实例 match function MATCH S2 B2 R2 0
  • 在 Linux 中使用 Core Dump 检查点/重新启动

    可以使用进程的核心转储来实现检查点 重启吗 核心文件包含进程的完整内存转储 因此理论上应该可以 将进程恢复到转储核心时的相同状态 是的 这是可能的 GNU Emacs 这样做是为了优化其启动时间 它加载一堆 Lisp 文件来生成图像 然后转
  • Typescript 中的 Angular:如何将通用类型传递给函数

    使用 Typescript 编写 Angular 5 单元测试 我有一个函数可以查询 DOM 并返回一个实例MyComponent如果找到类 function getMyComponent hostFixture ComponentFixt
  • 如何设置无限循环并打破它。 (Java 线程)

    我已经设置了一个线程 我想使用循环来运行它 所以这个线程应该在循环中运行并在某个时间中断并再次运行循环 请我不知道如何做到这一点 有人可以指导我吗 Java 有一个内置的机制 可以让线程做某事 然后等待一段时间再做一次 称为Timer 您可
  • 使用java库将.class文件反编译为.java源代码

    我正在开发一个需要将 class文件反编译为源代码的java项目 我发现了很多方法 例如JAD反编译器和 javap p 方法 但我认为这些方法无法完成以编程方式 请告知是否可以 有什么方法可以以编程方式完成此操作 如果您向我展示任何库 我
  • 在 angularjs 和express.js 之间进行下载

    我可以获取我请求的文件的原始数据 但无法让浏览器向用户提供文件 我需要使用 iframe 吗 Client code download file function path callback http post download clien
  • 为什么这是未定义的行为?

    为什么以下给定表达式会调用未定义的行为 int i 5 i i i i 1 我的问题受到Als的影响在这里提问 它不是未定义的 在这里回答C 序列点和偏序 我认为这同样适用于 C 这是我在看到该链接之前的回复 逗号运算符引入了一个序列点 并