为什么条件运算符是右结合的?

2023-12-10

我可以理解为什么赋值运算符是右结合的。这是有道理的,当

x = 4 + 3

求值时,4 和 3 在分配给 x 之前相加。

我不清楚如何?:将从右结合中受益。只有当两个人在一起时才重要吗?:s 是这样使用的

z = (a == b ? a : b ? c : d);

那么它的评估是这样的:

z = (a == b ? a : (b ? c : d));

从左到右评估肯定更有意义吗?


如果从左到右计算,它看起来像这样:

z = ((a == b ? a : b) ? c : d);

也就是说,它将使用第一个条件的结果 (a or b) 作为第二个条件的布尔条件。这没有多大意义:这就像在说:

int z, tmp;
/* first conditional */
if(a == b) tmp = a;
else       tmp = b;
/* second conditional */
if(tmp) z = c;
else    z = d;

虽然也许有一天您会想要这样做,但更有可能的是,每个?:接下来的内容旨在添加更多条件,例如if / else if / else if / else,这就是右关联绑定产生的结果:

int z;
/* first conditional */
if(a == b)                          z = a;
else /* second conditional */ if(b) z = c;
else                                z = d;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么条件运算符是右结合的? 的相关文章

  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • Catia VBA 到 .CATScript(针对“集合”类型)

    在我的 VBA 代码中 我使用以下内容 Dim docsToSave As Scripting Dictionary Set docsToSave New Scripting Dictionary Dim toRemove As Colle
  • Matlab 上 Z 归一化 (z-score) 函数的反函数

    在Matlab R2014a中我有信心使用z分数 x 功能 function z mu sigma zscore x flag dim if isequal x z return end if nargin lt 2 flag 0 end
  • 在 JPanel 上添加 .GIF 时显示黑色方块

    我的问题是 当将 GIF 添加到 JPanel 时 它会显示 GIF 的黑色方形背景 在JPanel上添加时的结果 当我使用这一行时会发生这种情况 p2 add loadBar where p2 new JPanel 但是 当我在 JFra
  • 在 swift 中使用简单 Ping (iOS)

    我正在尝试使用 Apple 的类 Simple Ping 但我无法使其正常工作 当我运行示例 mac os x 项目时 它正在工作 2015 06 17 00 03 22 569 SimplePing 20386 3133535 ping
  • Angular 5 插入动态输入属性

    我想将动态属性插入到输入 html 标记中 但我不知道该怎么做 我从组件端得到了这段代码 import Component OnInit from angular core Component selector app transclusi
  • Web 套接字在 Firefox 12 中不工作

    Firefox 无法与服务器 ws 192 168 0 155 5555 socket server3 php 建立连接 document ready function if WebSocket in window alert not av
  • 将 jQuery 自动完成与 Flask 结合使用

    这个问题之前已经被问过 我想我已经做了我在那里看到的事情 但我真的不知道我做错了什么 我对 jQuery 了解不多 但我会尽力解释我想要做什么 我想根据数据库中的查询自动完成 所以我的模板中有这样的内容
  • 张量流构建错误

    我在构建 Tensorflow 1 1 0 时遇到此错误 Starting local Bazel server and connecting to it ERROR home bishal cache bazel bazel bishal
  • ASP.NET Core 5 和 6 JWT 身份验证始终抛出 HTTP 401 代码

    我想在 ASP NET Core 中实现基于 JWT 的安全性 目前我想要它做的就是读取按钮中的令牌 Html ActionLink Test Oper Home 授权标头并根据我的标准验证它们 我不知道错过了什么 但它总是返回 HTTP
  • 将 prop 从子级传递给父级 React

    In WeatherForecast组件我需要传递函数的返回值appColor进入财产 那么该财产来自WeatherForecast需要传入className of app成分 新的反应 不确定如何将属性从子级传递到组件 class Wea
  • 在webview中加载本地javascript?

    我正在用我自己的广告快速制作移动浏览器 我想运行脚本 我已经注入了 javascript 本地文件 但它在其他窗口中打开并覆盖 webview 内容 是否可以在 webview 页面中运行 javascript 代码 不在其他窗口中 仅在包
  • 列出 knitr 环境(在 R 块中使用 list2env 时出现 R-markdown 错误)

    编辑 我发现问题源于yaml代码 它来自于应用这个解决方案动态命名文件 我相信它创造了一个家长环境knitr代码 因此list2env造成意想不到的行为 需要明确的是 下面的代码在 R 中完美运行 我在用list2env with envi
  • Camera2 API - Android

    我正在尝试使用android提供的新相机api作为camera2 但 CameraManager manager CameraManager getActivity getSystemService Context CAMERA SERVI
  • 检查 JavaScript 中属性是否存在

    我是 JavaScript 新手 对鸭子类型的概念有点困惑 据我所知 我理解了这个概念 但这在我的想法中导致了一个奇怪的结果 我将用下面的例子来解释 我目前正在使用 jQuery Mobile 开发移动 Web 应用程序 有一次我捕捉到了v
  • 使用 has_one 和 Belongs_to 的嵌套路由和 form_for 以及模型

    如何使用嵌套路由映射 has one 模型 以及如何在 RESTful 数据库之后为 localhost 3000 users 1 profile new html erb 添加 form for 用户拥有一份个人资料 Models cla
  • 使用相同的 php 文件显示表单并接收表单数据

    我有一个生成表单的 php 页面 表单的操作属性是页面本身 用户提交表单后 将加载相同的页面 但这次设置了 POST 变量 因此页面运行另一个脚本来处理来自表单的传入数据 我通过使用条件分叉来做到这一点 if isset POST var
  • 获取断点检索地址簿数据

    我正在检索phoneNumbers我得到一个断点 我花了几个小时试图修复它 但仍然没有成功 void textMessage ABAddressBookRef addressBook ABAddressBookCreate NSMutabl
  • 编译器自动绑定(类型推断)泛型类型

    以下代码在 t3 行有编译错误 public
  • 通过递归 CTE 使用 SQLAlchemy 获取层次结构的顶级父 ID

    我有这样一个案例 Note table id parent id 1 Null 2 1 3
  • 为什么条件运算符是右结合的?

    我可以理解为什么赋值运算符是右结合的 这是有道理的 当 x 4 3 求值时 4 和 3 在分配给 x 之前相加 我不清楚如何 将从右结合中受益 只有当两个人在一起时才重要吗 s 是这样使用的 z a b a b c d 那么它的评估是这样的