IT

연산자의 연관성은 무엇이며 왜 중요한가요?

lottoking 2020. 10. 10. 10:23

연산자의 연관성은 무엇이며 왜 중요한가요?


연관성 (연관성)이란 무엇이며 왜 중요한가요?

업데이트 : 연산자 연관성


연산자의 경우 연관성은 동일한 연산자가 행에 나타날 때 먼저 적용되는 연산자 발생을 의미합니다. 다음 Q에서 운영자가 되십시오.

a Q b Q c

경우 Q왼쪽 연관이있다, 그것은으로 평가

(a Q b) Q c

그리고 그것은 올바른 연관성이라면 다음과 같이 평가됩니다.

a Q (b Q c)

표현의 의미를 변경하기 때문에 중요합니다. 정수 산술을 사용하는 나누기 연산자를 고려하십시오.

4 / 2 / 3    <=>    (4 / 2) / 3    <=> 2 / 3     = 0

올바른 연관성이라면 0으로 나누기 때문에 정의되지 않은 것으로 평가됩니다.

4 / 2 / 3    <=>    4 / (2 / 3)    <=> 4 / 0     = undefined

세 종류의 연관성이 있습니다.

수학의 연관성

프로그래밍 언어의 작업 순서

CPU 캐시의 연관성.

수학에서 연관 속성은 더하기 (+)와 같은 연산자의 속성입니다. 이 속성을 사용하면 명령문의 값을 변경하지 않고 괄호를 다시 정렬 할 수 있습니다.

(a + b) + c = a + (b + c)

프로그래밍 언어에서 연산자의 연관성 (또는 고 정성) 은 괄호 없을 때 동일한 우선 순위의 연산자를 그룹화하는 방법을 결정하는 속성입니다 . 즉, 각 연산자가 평가되는 순서입니다. 이것은 프로그래밍 언어마다 다를 수 있습니다.

CPU 캐시에서 연관성은 성능을 최적화하는 방법입니다.


우선 순위가 동일한 연산자에 대한 평가 순서입니다. LEFT TO RIGHT 또는 RIGHT TO LEFT 순서가 중요합니다. 에 대한

3 - 2 - 1

LEFT에서 RIGHT이면

(3 - 2) - 1

그리고 0입니다. 오른쪽에서 왼쪽이면

3 - (2 - 1)

대부분의 언어에서 마이너스 연산자는 LEFT TO RIGHT 연관성이있는 연관성이 있습니다.


"연산자 연관성"을 참조하는 경우-괄호가 없을 때마다 우선 순위의 연산자가 그룹화되는 방식을 언어가 결정하는 방식입니다.

예를 들어 C 기반 언어의 + 및-연산자는 우선 순위를 갖습니다. 둘 다 (괄호없이) 사용하는 식을 사용할 때 컴파일러는 평가할 순서를 결정해야합니다.

12-5 + 3을 쓰면 가능한 평가는 다음과 가능합니다.

  1. (12-5) + 3 = 10
  2. 12- (5 + 3) = 4

형식을 평가하는 순서에 따라 다른 결과를 얻을 수 있습니다. C 기반 언어에서 + 및-는 연관성을 남겼습니다. 이것은 위의 경우에 첫 번째 경우에 평가를 의미합니다.

모든 언어에는 우선 순위와 연관성 모두에 강력하게 정의 된 규칙이 있습니다. 여기 에서 C # 규칙에 대해 자세히 알아볼 수 있습니다 . 연산자 연관성우선 순위 의 일반적인 개념은 wikipedia에서 잘 다룹니다.


단순한 !!

Left Associative 는 거기에서 오른쪽으로 평가한다는 의미입니다.

Right Associative 는 우리의 표현을 오른쪽에서 평가하는 의미합니다.

*, / 및 %의 우선 순위는 동일하지만 연관성에 따라 답변이 변경 될 수 있습니다.

예 : 우리는 표현이 있습니다 : 4 * 8 / 2 % 5

왼쪽 연관 : (4 * 8) / 2 % 5 ==> (32/2) % 5 ==> 16 % 5 ==> 1

연관 연관 : 4 * 8 / (2 % 5) ==> 4 * (8 / 0) ==> 정의되지 않은 동작

도움이 되셨기를 바랍니다.


연산자 연관성을 의미 가정합니다 ...

연산자에 피 연산 바인딩하는 순서입니다. 원래 :

ab + c

다음과 같이 평가 될 수 있습니다 (-및 +의 우선 순위가 같다고 가정).

((ab) + c) 또는,
(a- (b + c))

연산자가 연관되어있는 경우 (왼쪽 피연산자에 즉시 바인딩) 첫 번째 연산자로 평가됩니다. 그들이 올바른 연관성이라면 두 번째로 평가됩니다.


연산자 연관성을 의미하는 경우 :

식이 구문 분석되는 방식을 정의합니다. 표준을 제공하는 모든 방식으로 구문 분석됩니다.

부작용이있을 수있는 동일한 전례가있는 작업에 가장 중요합니다.


이전 예의 대부분은 상수를 사용했습니다. 인수가 함수 호출 인 경우 호출 순서는 물론 컴파일러에 따라 연관 규칙에 의해 결정될 수 있습니다. 그리고 그 기능에 부작용이 있다면 ..


우리 모두는 우선 순위가 중요하다는 것을 알고 있지만 표현의 의미를 해석 할 때 연관성도 중요합니다. 정말 간단한 소개를 위해 Power of Operators를 사용해보십시오 .

참고 URL : https://stackoverflow.com/questions/930486/what-is-associativity-of-operators-and-why-is-it-important