이 this link
연관성 및 우선하는 순서 자바 표현식에 연산자를 적용하지만이있는 하위 표현식이 평가되는 순서를 결정하지 않는 결정에 설명되어있다. Java에서 하위 표현식은 왼쪽에서 오른쪽으로 평가됩니다 (선택 사항이있을 때). 예를 들어 A() + B() * C(D(), E())
이라는 표현식에서 서브 표현식은 A()
, B()
, D()
, E()
및 C()
순으로 평가됩니다. C()
이 D()와 E() 둘 다 왼쪽에 나타나지만 C()
을 평가하려면 D()
과 E()
의 결과가 필요합니다. 이 동작에 의존하는 코드를 작성하는 것은 좋지 않은 스타일로 간주됩니다 (다른 프로그래밍 언어는 다른 규칙을 사용할 수도 있음).
--x
실행하고 두 개의 하위 표현의 합과 전체 표현식은 왼쪽에서 오른쪽으로 평가로
x++
보다 평가 전 왜
이 설명합니다. 첫 번째 것은 보다 먼저 실행됩니다 (예 : 수정본 ++
이 일반적으로 더 우선 순위를 갖지만, 여기에 포함 된 하위 표현식은 첫 번째 표현식 이후에 평가됩니다). 당신이 9 x
에 두 번 합산대로
x=10;
y = --x + x++;
// y = (10-1) /* now x==9 */ + (9); /* after this x == 10 */
// y = (9) + (9); /* and now x == 10 */
// y == 18 and x == 10
출처
2016-08-21 18:31:55
ddb
아래 참조 명확히로
그래서, 18, 정확 또한 http://stackoverflow.com/questions/2371118/how-do-the-post -increment-i-and-pre-increment-i-operators-in-java – Tunaki
그 튜토리얼에서 더 높은 우선 순위가 의미하는 바를 모르겠습니다. 그것은 여기서 확실히 관련이 없습니다. '+'의 피연산자는 왼쪽에서 오른쪽으로 평가되므로'- x'는'x ++'보다 먼저 평가됩니다. @ Tunaki의 링크는보다 자세한 정보를 제공합니다. –
처음에 흥미가 있었던 것은'++ a'가'++ a'가 값을 반환하기 때문에 올바르지 않으므로'++ a' 전에'++ '를 사용하는 것이 무엇 이었는가하는 점이었습니다. '(++ a) ++'또는'++ (a ++)'로 컴파일 될지 어떨지에 관계없이 예외를 발생시킵니다. 하지만 실수가 아니라면'a +++ b '의 경우에 유용하게 쓰이며'a + (++ b)'가 아니라'(a ++) + b'라고 판단합니다. – Pshemo