C/C++ 中的运算符优先级和关联性
Operator precedence and Associativity in C/C++
请注意,这与运算符优先级无关。()和++,未定义的行为和序列点,为什么这些构造(使用++)是未定义的行为?以及这里数百个类似的问题
简而言之:标准是否保证了结合性?
详细示例:从维基百科的运算符优先级条目中,operator*
和operator/
具有相同的优先级,并且它们是Left-to-right
运算符。这是否意味着,标准保证:
int res = x / y * z / t;
将被评估为
int res = ( ( x / y ) * z ) / t;
还是它定义了实现?
如果保证,你能报价吗?
只是出于好奇,在这些情况下我总是写括号。
准备删除这个问题,如果有这样的问题。
来自最新的公开草案
5.6 乘法运算符
1 乘法运算符 *、/和 % 从左到右分组。
multiplicative-expression: pm-expression multiplicative-expression * pm-expression multiplicative-expression / pm-expression multiplicative-expression % pm-expression
所以解析会像这样:
int res = x / y * z / t;
int res = (x / y * z) / t;
int res = ((x / y) * z) / t;
n3337 5.6/1
乘法运算符 *、/和 % 从左到右分组。
读取标准杆面值 5 标准。
相关文章:
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 使用2个键的cpp-stl::优先级队列排序不正确
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 打印优先级队列
- 带自定义比较器的最小优先级队列
- 优先级队列自定义比较器
- C++ 优先性和关联性
- 排序数组优先级队列
- 更改运行时优先级队列的排序功能
- 优先级队列构造函数的工作
- 实现优先级队列
- 优先级队列功能比较
- C++ 带有函数指针的运算符优先级
- 将更高的优先级设置为 boost::asio 线程处理进程
- 如何使C++编译器遵循与C#在该赋值语句中相同的优先级、关联性和求值顺序
- 是否违反 C/C++ 运算符优先级和关联性规则?
- C/C++ 中的运算符优先级和关联性
- C++ 中的运算符优先级和运算符关联性规则
- 编译器如何根据优先级和关联性解释此表达式