2015-02-07 3 views
-2

자바를 공부하면서 4 + 20/(3 - 1) * 2이라는 표현이 나왔습니다.4 + 20/(3 - 1) * 2를 4 + (20)/((3 - 1) * 2)로 해석하는 것이 왜 잘못 되었습니까?

Eclipse에서이 표현식은 24로 평가됩니다. 따라서 4 + ((20/(3 - 1)) * 2)으로 해석 될 수 있습니다.

4 + 20/(3 - 1) * 2를 4 + (20)/((3 - 1) * 2)으로 해석하면 9가됩니까?

도움을 주셔서 감사합니다.

UPDATE

, 내 질문에 구체적으로는 수학적으로, 나의 부분에 대한 오해 나 잘못된 해석,하지 않는 한 4 + 20/(3-1) I에 의해이 논문 https://math.berkeley.edu/~gbergman/misc/numbers/ord_ops.html에서 배울 2 모호 * George Bergman, University of California, Berkeley의 교수. 하나는 4 + ((20/(3 - 1)) * 2) 또는 4 + (20)/((3 - 1) * 2)으로 해석 할 수 있습니다.

그러나 Java에서는 4 + ((20/(3 - 1)) * 2) 해석이 올바르지 만 4 + (20)/((3 - 1) * 2) 해석은 잘못된 것처럼 보입니다. 두 해석 모두에서 괄호 안의 것들이 먼저 계산되고 곱셈과 나눗셈이 수행되고 마지막으로 덧셈과 뺄셈이 수행됩니다. 내가 두 가지 사이에서 볼 수있는 유일한 차이점은 올바른 해석 단위가 먼저 이루어지고 잘못된 해석 곱셈이 먼저 수행된다는 것입니다.

제 질문은 Java에서 하나의 해석과 다른 해석을 만드는 핵심 요소입니다.

감사합니다.

+2

이 질문이 PHP에 게시 된 이유 – user3647254

+0

일반적으로 출력이 24이거나 프로그램 언어와 관련된 이유는 무엇입니까? – Rizier123

+2

두 가지 이유 : 1. 왼쪽 연관성; 2. 운영자 우선 순위. 이 모든 것은 JLS에서 정의됩니다. – fge

답변

1

작업 순서에 따라 가장 안쪽 괄호가 먼저 계산 된 다음 왼쪽에서 오른쪽으로 곱셈 및 나눗셈이 수행되고 왼쪽에서 오른쪽으로 더하기 및 빼기가 수행됩니다. 왼쪽에서 오른쪽으로의 원리가 중요합니다. 이 작업 순서는 수학에서 표준이며 Java (대부분의 언어와 마찬가지로)는 수학 표준을 따릅니다. Order of Operations

+1

왼쪽에서 오른쪽으로 움직이는 원리를 가져 주셔서 감사드립니다. 나는 그것이 내가 놓친 것이라고 생각한다. 곱셈과 나눗셈이 같은 우선 순위를 가지고 있음 하나의 해석 부에서 먼저 수행되고 다른 곱셈에서 먼저 수행되지만 잘못된 것으로 간주되는 이유는 이해하지 못했습니다. – MK777

+0

쉽게 놓칠 수있는 문제는 없습니다. 동점은 왼쪽으로갑니다. –

1

음, 먼저 괄호를 평가하십시오.

그래서 다음 부문

그럼 승산 최종 답변을 의미

너무 4+20

이 응답이 24 4+10*2

4+20/2*2

자사의 프로그래밍 언어와 독립적 게이지 및 작업 순서 또는 기반으로 "PEMDAS"

0

자바는 괄호를 사용하여 프로그램에서 작업의 순서를 사용자 정의 할 수 있습니다 그러나 여기 precedence of operators

예제의 일부를보고하십시오 '연산자 우선 순위'라는 것이있다 적절하게.

1

설명하는 방식을 해석하는 데 아무런 문제가 없습니다.일단 괄호를 포함하면 산술 연산이 수행되는 일반적인 순서를 우회 할 수 있습니다. 괄호가 없으므로 산술 연산을 평가하는 일반적인 순서가 시작됩니다. 수학자가 일관된 방식으로 계산을 수행하고 계산이 일관된 방식으로 수행 될 수 있도록하기 위해서입니다.

0

이 간단한 연산자 우선 순위입니다 : 후이 모든 * 및/왼쪽에서 오른쪽 및 최종 +에서와 우선 괄호 이렇게 계산 된 것 얻을

4 + 20/(3 - 1) * 2 

, - 왼쪽에서 오른쪽으로 :

1. 4 + 20/(3 - 1) * 2 
2. 4 + (20/2) * 2 
3. 4 + (10 * 2) 
4. 4 + 20 
      = 24 
관련 문제