`y = x = x + 1;` 是未定义的行为吗?

2024-02-26

这段代码是:

y = x = x + 1;

C 中未定义的行为?


回答你的问题
No.

会发生什么
这将会发生:

int x = 1; /* ASSUME THIS IS SO */
y = x = x + 1;

/* Results: */
y == 2;
x == 2;

它是如何编译的
与以下相同:

x += 1;
y = x;

为什么这不是未定义的
因为你不写x用你读到的同样的表达方式。你只需将其设置为自身+ 1,然后赋值y的值x.

你的未来
如果您发现代码令人困惑,可以使用括号以提高可读性:

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

`y = x = x + 1;` 是未定义的行为吗? 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 无法在动态链接库 libstdc++-6.dll 中定位过程入口点 _gxx_personality_v0 错误

    昨天 我决定下载 安装并尝试使用 Allegro 5 我还下载了带有 MinGW 编译器的 Code Blocks 12 11 我设置了所有内容并正确安装了所有内容 或者我是这么认为的 并尝试运行示例代码以查看它是否有效 include
  • NSIS 插件“nsScreenshot”在 Windows NT 6.x 中不起作用

    我添加了一个比原始插件晚3年发布的代码 但它仍然返回错误 代码很简单 恕我直言 但我仍然很可能错过某些方面 看这段代码 nsScreenshot NSIS Plugin c 2003 Leon Zandman email protected
  • C#中主线程的引用

    如何从 C 中的另一个线程获取对主线程的引用 为什么需要这个 以加载到控制台应用程序的程序集为例 该程序集引发另一个想要在控制台应用程序的主线程上等待 加入 的线程 它将如何做到这一点 我是这样想的 在 Visual Studio 2010
  • 如何在asp.net core中定义返回html的函数

    基本上我需要像旧的 asp net 这样的东西 helper MakeNote string content p strong Note strong nbsp nbsp content p or JSX MakeNote note ret
  • 将流量从 80 转发到 8080 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经用puppet安装了tomcat 它在标准 8080 端口上运行 tomcat进程以tomcat用户身份启动 我想将所有流量从端口
  • iOS:使用HKObserverQuery的后台更新completionHandler

    HKObserverQuery有以下方法支持在后台接收更新 initWithSampleType predicate updateHandler The updateHandler has a completionHandler其中有以下内
  • 从 git 存储库中提取作者信息

    我正在尝试从 git 存储库中提取 源代码行 作者标签 对 最简单的方法是使用 git Blame 问题是 gitblame 将最后一个提交者视为作者 无论提交者只是缩进代码还是真正更改了代码 你知道有什么更好的方法吗 或者也许在尝试解决问
  • 将 WPF 用户控件选择传递给主机控件

    我有一个带有列表框的 WPF 用户控件 我想通过绑定将列表框中的选定项传递给调用控件 我怎样才能实现这个目标 您可以在用户控件上公开 SelectedItem 的新属性 并将其绑定到子控件 ListBox 用户控件的代码 不过我是从 Con
  • 自定义函数类

    我正在开发一个涉及从其他函数构造函数的项目 我有编写一个类来简化事情的想法 但如果不求助于使用我就无法让它工作 proto 这基本上就是我的愿景 function MyFunction var myFn new MyFunction myF
  • Express.js + lint 给出错误

    https www youtube com watch v Fa4cRMaTDUI https www youtube com watch v Fa4cRMaTDUI我正在观看这节课 并试图重现作者所做的一切 19 00 他设置了 vue
  • 特定模型的 Django 管理自定义模板

    我正在尝试在 Django 管理中为特定模型添加自定义模板 基本上我想在 Django admin 中显示地址模型的 Google 地图 那么对此有什么帮助吗 FineManual tm 对此进行了全面介绍 因此请先阅读此内容 检查这个网址
  • 将字段更改为ManyToMany时Django数据迁移

    我有一个 Django 应用程序 我想将字段从foreignkey更改为ManyToManyField 我想保留我的旧数据 为此 最简单 最好的流程是什么 如果重要的话 我使用 sqlite3 作为我的数据库后端 如果我对问题的总结不清楚
  • SQL/SQL-LITE - 过滤后计算记录

    假设我有一个客户表和一个销售订单表 其架构如下 客户 id 姓名 销售订单 id customer id sales representer 具有以下定义 id 是两个表中的主键 customer id 是外键引用客户 我想实现以下查询 F
  • Python 对 Windows 8 的支持 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 重用存储是否会开始新对象的生命周期? [复制]

    这个问题在这里已经有答案了 include
  • Rails:如何使用 before_save 更改基于另一个字段的字段值?

    我试图根据另一个布尔字段的值将一个布尔字段设置为 false 我使用 ActiveRecord 模型尝试了以下操作 before save reconcile xvent def reconcile xvent self xvent hoo
  • 网络错误:405 方法不允许 AngularJS REST

    在 AngularJS 中 我有以下功能 运行良好 http get fruits json success scope handleLoaded 现在我想将其从文件更改为 url 使用一些可爱的 Laravel 4 返回 json htt
  • 在 AngularJS 中,如何获取作为 URL 一部分的 ID?我正在使用 Restangular 与 REST API 进行通信

    我正在使用 Restangular 进行后端调用 只要 URL 提供如下所示的数据 一切都会正常工作 如果我打http mysite responses 回复看起来像 fname some guy lname some name dob 2
  • 如何访问 boost::spirit::karma 中嵌套对象的数据?

    In an ItemList包含列表Item对象 我如何访问Item生成器中的对象 以下示例代码在 VC9 上编译 适当设置了 boost 包含和链接目录 我不知道如何设置list generator item include
  • `y = x = x + 1;` 是未定义的行为吗?

    这段代码是 y x x 1 C 中未定义的行为 回答你的问题 No 会发生什么这将会发生 int x 1 ASSUME THIS IS SO y x x 1 Results y 2 x 2 它是如何编译的与以下相同 x 1 y x 为什么这