有人可以解释i +++ x吗?

oldmud0

i++当我偶然发现时,我感到很困惑i+++[another expression]我去在DrJava中测试了它:

> int i;
> i++ 
0
> i+++1
2
> i+++1
3
> i+++2
5
> i+++1
5
> ++i+1
7
> ++i+1
8
> ++i+1
9
> ++i+2
11

后来,我这样做了:

> int i;
> i+++(++i);
> System.out.print(i);
2
> System.out.print(i);
2
> i+++(++i);
> System.out.print(i);
4
> i+++(++i);
> System.out.print(i);
6

我得出的结论是,返回的值是i ++和另一个变量的加法。但是i +++(++ i)呢?那里发生了什么事?最重要的是,为什么我要(或不想)在我的代码中使用它?

Arshajii
i+++(++i)

我们可以将其重写为

(i++) + (++i)

请注意,i++增加i并返回i初始值,而++i增加i并返回i值。

因此,对于i = 3i++递增i至,4然后返回3++i然后递增i5并返回5因此,结果是8i的最终值是5,因为它增加了两次:

int i = 3;

System.out.println(i+++(++i));
System.out.println(i);
8
5

有时将其视为字节码会有所帮助

ILOAD 1       // load i
IINC 1 1      // increment i
IINC 1 1      // increment i
ILOAD 1       // load new i (i.e. initial i + 2)
IADD          // add top two values on stack: i and (i + 2)

最重要的是,为什么我要(或不想)在我的代码中使用它?

永远不要在自己的代码中做类似这样的事情。将其分解成较小的,可理解的部分,而不是全部完成。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有人可以解释吗?

来自分类Dev

有人可以解释WaitForSeconds()吗?

来自分类Dev

有人可以解释输出吗?

来自分类Dev

有人可以向我解释这一行吗?c | = 1 << i;

来自分类Dev

有人可以解释堆栈上下文吗?

来自分类Dev

有人可以解释__set和__get的重载吗?

来自分类Dev

有人可以解释redis setbit命令吗?

来自分类Dev

python tuple,有人可以解释这种行为吗?

来自分类Dev

有人可以解释这个(void **)&d_in吗?

来自分类Dev

有人可以解释cvPtr的OpenCV文档吗?

来自分类Dev

有人可以解释堆栈上下文吗?

来自分类Dev

有人可以全面解释WebRTC统计API吗?

来自分类Dev

有人可以解释这本词典的行为吗?

来自分类Dev

VBA中的数组下标-有人可以解释吗?

来自分类Dev

有人可以解释Selenium中的Screenshot吗?

来自分类Dev

有人可以向我解释此代码吗?

来自分类Dev

有人可以解释Shell Shock Bash代码吗?

来自分类Dev

奇怪的红宝石行为。有人可以解释吗?

来自分类Dev

有人可以很好地解释Dagger 2吗?

来自分类Dev

有人可以准确解释这些gsub参数吗?

来自分类Dev

有人可以解释jQuery.sap.setObject吗?

来自分类Dev

有人可以解释AWS GET吗?

来自分类Dev

有人可以解释.wav(WAVE)文件头吗?

来自分类Dev

有人可以解释双递归python吗?

来自分类Dev

有人可以解释“使用”的含义吗?

来自分类Dev

有人可以解释下面的scala代码吗?

来自分类Dev

有人可以解释给定循环的行为吗?

来自分类Dev

有人可以为我解释这个递归吗?

来自分类Dev

有人可以解释该程序的控制流程吗?