赋值或条件绑定更强
Does assignment or conditional bind stronger?
我刚刚偶然发现了以下两条C++语法规则:
conditional-expression:
logical-or-expression
logical-or-expression ? expression : assignment-expression
^^^^^^^^^^^^^^^^^^^^^
assignment-expression:
conditional-expression
^^^^^^^^^^^^^^^^^^^^^^
unary-expression assignment-operator assignment-expression
throw assignment-expression_opt
注意规则是如何相互递归的:条件表达式指赋值表达式配表达式指条件表达式 这对于运算符优先级意味着什么?通常,强绑定运算符的非终端出现在弱绑定运算符规则的右侧,但不是相反,对吧?以下是困扰我的问题,特别是: 一方面, 另一方面, 传统意义上的运算符优先级的概念在这里根本不适用吗?为什么?a = b ? c : d
意味着a = (b ? c : d)
,表明?:
结合更强。a ? b : c = d
意味着a ? b : (c = d)
,表明=
结合更强。
?:
和=
具有相同的运算符优先级,并且从右向左绑定。
请参阅cppreference。
相关文章:
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 在基于范围的for循环中使用结构化绑定声明
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 视觉studo 2019中的漫画和静态/动态绑定
- 将自由函数绑定为类成员函数
- 将常量指针引用绑定到非常量指针
- 在派生类中绑定非静态模板化成员函数
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 在 openGL 中多次绑定缓冲区
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 使用结构化绑定'Reflection'
- 为什么 std::绑定错误参数可以成功?
- 如何绑定 C++ gRPC 客户端的网络接口
- 在 openmp 中,omp_get_thread_num是否绑定到物理线程?
- C++绑定(已弃用)
- 运行时错误:引用绑定到类型为"int"的空指针
- 赋值或条件绑定更强
- 动态绑定的条件到底是什么