연관성 (연속성)이란 무엇이며 왜 중요한가요?
업데이트 : 연산자 연관성
답변
연산자의 경우 연관성은 동일한 연산자가 행에 나타날 때 먼저 적용되는 연산자 발생을 의미합니다. 다음 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
답변
세 가지 종류의 연관성이 있습니다.
수학에서 연관 속성은 더하기 (+)와 같은 연산자의 속성입니다. 이 속성을 사용하면 명령문의 값을 변경하지 않고 괄호를 다시 정렬 할 수 있습니다.
(a + b) + c = a + (b + c)
프로그래밍 언어에서 연산자의 연관성 (또는 고 정성) 은 괄호 가 없을 때 동일한 우선 순위의 연산자를 그룹화하는 방법을 결정하는 속성입니다 . 즉, 각 연산자가 평가되는 순서입니다. 이것은 프로그래밍 언어마다 다를 수 있습니다.
CPU 캐시에서 연관성은 성능을 최적화하는 방법입니다.
답변
단순한!!
Left Associative means we evaluate our expression from left to right
Right Associative means we evaluate our expression from right to left
*, / 및 %의 우선 순위는 동일하지만 연관성에 따라 답변이 변경 될 수 있습니다.
예 : 우리는 다음과 같은 표현을 가지고 있습니다 : 4 * 8 / 2 % 5
Left associative: (4 * 8) / 2 % 5 ==> (32 / 2) % 5 ==> 16 % 5 ==> 1
Right associative: 4 * 8 /(2 % 5) ==> 4 * ( 8 / 2) ==> 4 * 4 ==> 16
답변
“연산자 연관성”을 언급하는 경우-괄호가 없을 때 동일한 우선 순위의 연산자가 그룹화되는 방식을 언어가 결정하는 방식입니다.
예를 들어, C 기반 언어의 + 및-연산자는 동일한 우선 순위를 갖습니다. 둘 다 (괄호없이) 사용하는 식을 작성할 때 컴파일러는 평가할 순서를 결정해야합니다.
12-5 + 3을 쓰면 가능한 평가는 다음과 같습니다.
- (12-5) + 3 = 10
- 12-(5 + 3) = 4
표현식을 평가하는 순서에 따라 다른 결과를 얻을 수 있습니다. C 기반 언어에서 +와-는 연관성을 남겼습니다. 이는 위의 표현식이 첫 번째 경우로 평가된다는 것을 의미합니다.
모든 언어에는 우선 순위와 연관성 모두에 대해 강력하게 정의 된 규칙이 있습니다. 여기 에서 C # 규칙에 대해 자세히 알아볼 수 있습니다 . 연산자 연관성 과 우선 순위 의 일반적인 개념은 wikipedia에서 잘 다룹니다.
답변
우선 순위가 동일한 연산자에 대한 평가 순서입니다. LEFT TO RIGHT 또는 RIGHT TO LEFT 순서가 중요합니다. 에 대한
3 - 2 - 1
LEFT에서 RIGHT이면
(3 - 2) - 1
0입니다. RIGHT에서 LEFT이면
3 - (2 - 1)
대부분의 언어에서 마이너스 연산자는 LEFT TO RIGHT 연관성이 있다고 말합니다.
2020 업데이트 :
3 - 2 - 1
주장이 “물론 왼쪽에서 오른쪽으로한다”라면 상황은 사소한 것처럼 보일 수 있습니다. 그러나 Ruby 또는 NodeJS에서 수행되는 경우와 같은 다른 경우 :
$ irb
2.6.3 :001 > 2 ** 3 ** 2
=> 512
은 **
연산자 “의 힘”이다. 연관성은 오른쪽에서 왼쪽입니다. 그리고 그건
2 ** (3 ** 2)
이는 2 ** 9
즉, 512
대신
(2 ** 3) ** 2
이는 8 ** 2
즉, 64
.
답변
연산자 연관성을 의미한다고 가정합니다 …
연산자에 피연산자를 바인딩하는 순서입니다. 원래:
a-b + c
다음과 같이 평가 될 수 있습니다 (-및 +의 우선 순위가 같다고 가정).
((a-b) + c) 또는,
(a-(b + c))
연산자가 연관되어있는 경우 (왼쪽 피연산자에 즉시 바인딩) 첫 번째 연산자로 평가됩니다. 그들이 올바른 연관성이라면 두 번째로 평가됩니다.
답변
연산자 연관성을 의미하는 경우 :
식이 구문 분석되는 방식을 정의합니다. 표준을 제공하므로 모든 표현식이 동일한 방식으로 구문 분석됩니다.
부작용이있을 수있는 동일한 선례가있는 작업에 가장 중요합니다.