为什么这里没有遵循运算符优先级?

EdmDroid

在此代码中:

int y = 10;
int z = (++y * (y++ + 5)); 

我所期望的

y++ + 5由于最里面的括号的优先级,将执行First 因此,值y将为11,而该表达式的值将为15。然后++y * ()将被执行。所以12 * 15 =180。所以z = 180

我得到了什么

z = 176

这意味着VM从左到右不遵循操作员优先级。那么我对运算符优先级的理解是错误的吗?

欧文

表达式(++ y *(y ++ + 5)); 将被放置在这样的堆栈中:

1. [++y]
2. [operation: *]
3. [y++ + 5] // grouped because of the parenthesis

结果将按该顺序执行

1. 10+1 = [11] // y incremented 
2. [operation: *]
3. 11+5 = [16] // y will only increment after this operation

该表达式的计算方式为

11 * 16 = 176

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么运算符`?:`没有优先级?

来自分类Dev

为什么不是和!在MySQL 5中有不同的运算符优先级?

来自分类Dev

什么是正确的Javascript运算符优先级表?

来自分类Dev

在Python中,运算符“ =”的优先级是什么?

来自分类Dev

Java中的运算符优先级(移位运算符):为什么以下输出为真?

来自分类Dev

为什么f#点运算符的优先级如此低

来自分类Dev

如果括号的优先级较高,那么为什么要先解决增量运算符?

来自分类Dev

为什么f#点运算符的优先级如此低

来自分类Dev

为什么 c++ && 运算符需要优先级

来自分类Dev

有关运算符优先级的示例

来自分类Dev

TypeScript运算符优先级表(或类型断言的优先级是什么?)

来自分类Dev

Java OR运算符优先级

来自分类Dev

运算符优先级的奇数

来自分类Dev

运算符优先级混淆

来自分类Dev

运算符的优先级:>和==

来自分类Dev

运算符优先级更改

来自分类Dev

运算符的优先级?

来自分类Dev

运算符优先级解析

来自分类Dev

RethinkDB运算符优先级

来自分类Dev

Java运算符优先级

来自分类Dev

LR(1)语法和运算符优先级语法有什么区别?

来自分类Dev

LR(1)语法和运算符优先级语法有什么区别?

来自分类Dev

y中的not not是否遵循运算符优先级规则?

来自分类Dev

为什么我不能使用运算符优先级来编写像$ sum((A. ^ 2)(:))$之类的语句

来自分类Dev

为什么这个正则表达式在后面却没有遵循左优先级?

来自分类Dev

运算符>> =和>>的奇怪优先级

来自分类Dev

PHP中的运算符优先级

来自分类Dev

运算符优先级和评估顺序

来自分类Dev

Swift中的运算符优先级重载

Related 相关文章

热门标签

归档