c - 如何评估 x?y:a?b:c?
问题描述
条件运算符的关联性是从右到左的,所以最右边的条件运算符应该首先被解决(测试 a 是否为真)但是书中提到第一个 x 将被测试
解决方案
条件运算符关联到正确的事实意味着x?y:a?b:c
将被解析,就好像它已经被写入一样x?y:(a?b:c)
。如果它与左边相关联,它会被解析为(x?y:a)?b:c
,这几乎肯定是一个惊喜(除非你习惯了 PHP)。
但是这些括号都不会改变执行顺序。条件运算符的第一个操作数总是首先计算。
推荐阅读
- c# - 在页面加载时调用两个 fullTrust 应用程序时出错
- c# - View 中的 LINQ 查询以升序或降序排列类别的金额总和
- python - TypeError:尝试将字典中的日期时间对象转换为字符串时需要整数(类型为 datetime.datetime)
- mxgraph - 如何删除 mxcell 中的特定属性
- python - 在字典中累积值的社区首选 Python 设计模式是什么?
- java - Thymeleaf - 如何删除字符串的最后一个字符
- node.js - 使用 TypeScript 将文件从请求直接上传到 S3
- c# - 如何在不使用主键的情况下在 ac# 代码中连接到 azure cosmos db 帐户
- amazon-web-services - AWS 弹性块存储 (EBS) 快照访问历史记录
- python - 如何在 Python 中从 API 结果创建数据框