java - 单行中的多个后缀和前缀操作
问题描述
int i=0;
int j = --i;
int k = i++ + --i + i-- + j-- + --i + i;
System.out.print("k= "+k); // k=-10
我似乎无法理解 k 的值为什么是 -10 ?
这是我觉得应该发生的事情。根据我的计算结果应该是-5。
Expression |Evaluation | Current Values
| | i=0 ,j=-1
i++ | 0 | i=1 ,j=-1
i++ + --i | 0 + 0 | i=0 ,j=-1
i++ + --i + i-- | 0 + 0 + 0 | i=-1 ,j=-1
i++ + --i + i-- + j-- | 0 + 0 + 0 + -1 | i=-1 ,j=-2
i++ + --i + i-- + j-- + --i | 0 + 0 + 0 + -1 + -2 | i=-2 ,j=-2
i++ + --i + i-- + j-- + --i + i; | 0 + 0 + 0 + -1 + -2 + -2 | i=-2 ,j=-2
如果我错了,请纠正我。
*在纠正我将 i 作为 0 而不是 -1 的错误之后 *
该表达式现在计算为 -10 (-1 + -1 + -1 + -1 + -3 + -3)。谢谢。
Expression |Evaluation | Current Values
| | i=-1, j=-1
i++ | -1 | i= 0, j=-1
i++ + --i | -1 + -1 | i=-1, j=-1
i++ + --i + i-- | -1 + -1 + -1 | i=-2, j=-1
i++ + --i + i-- + j-- | -1 + -1 + -1 + -1 | i=-2, j=-2
i++ + --i + i-- + j-- + --i | -1 + -1 + -1 + -1 + -3 | i=-3, j=-2
i++ + --i + i-- + j-- + --i + i; | -1 + -1 + -1 + -1 + -3 + -3 | i=-3, j=-2
解决方案
如果您正确地执行减量和增量,您将得到以下
int k = -1 + (-1) + (-1) + (-1) + (-3) + (-3)
结果:等于 -10
推荐阅读
- google-apps-script - 如何使用一个选项卡中的复选框复制行并将其添加到选项卡底部和两个附加选项卡?
- c++ - 获取 QInputDialog 信号发出的值
- r - 当使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串的一部分加粗
- javascript - jQuery更改切换到显示块并显示无
- javascript - 在组件内使用脚本做出反应
- oracle - Oracle DB 到 Oracle DB Connection Connection forward
- java - Spring Data Elasticsearch 是否支持日期字段的多种日期格式
- django - 带有 Redis 代理和多个队列的 Celery:所有任务都注册到每个队列
- python - 在 python 中迭代 n 行数组,然后是下 n 行,依此类推
- c++ - C++朋友模板函数:找不到函数定义