奇怪的Java语法

Wil*_*ood 6 java syntax

当我遇到这个问题时,我正在做一个练习计算机科学UIL测试表:

什么是以下输出?

int a = 5;
int b = 7;
int c = 10;
c = b+++-c--+--a;
System.out.println(a + " " + b + " " + c);
Run Code Online (Sandbox Code Playgroud)

我回答"由于语法错误没有输出",但我弄错了.真正的答案是4 8 1!(我自己测试过)

有人可以向我解释第4行是如何工作的吗?
谢谢

Aki*_*kes 14

我添加了一些括号:

int a = 5;
int b = 7;
int c = 10;
c = (b++) + (-(c--)) + (--a);
System.out.println(a + " " + b + " " + c);
Run Code Online (Sandbox Code Playgroud)

b ++:使用 b后b = b + 1

c--:使用 c后c = c - 1

--a: 在使用a之前a = a - 1

  • 括号+1和直截了当的解释 (2认同)

Ric*_*dle 6

看看它是这样的:

(b++) + (-(c--)) + (--a)
Run Code Online (Sandbox Code Playgroud)

这应该更有意义!

查看Operator Precedence以了解它为何如此工作.