>  기사  >  백엔드 개발  >  연산자 우선 순위와 연관성 표는 프로그래밍 언어의 표현식 평가에 대해 실제로 무엇을 알려줍니까?

연산자 우선 순위와 연관성 표는 프로그래밍 언어의 표현식 평가에 대해 실제로 무엇을 알려줍니까?

DDD
DDD원래의
2024-11-01 12:32:02734검색

What do operator precedence and associativity tables actually tell us about expression evaluation in programming languages?

연산자 우선순위 및 연관성: 정의 및 평가 순서와의 관계

소개

프로그래밍 언어, 연산자 우선 순위 및 연관성은 연산자가 평가되는 순서를 결정합니다. 많은 프로그래밍 교과서에서 이러한 속성을 나열하는 표를 제공하지만 해당 속성의 해석과 정의의 출처에 관한 질문이 발생합니다.

질문

  1. 함수라는 개념이 항상 왼쪽에서 오른쪽으로 평가하는 방식이 올바르지 않은 경우, 연산자 우선 순위와 연관성 표는 실제로 무엇을 나타냅니까?
  2. ANSI 표준이 아니라면 누가 연산자 우선 순위와 연관성을 설정합니까? ANSI가 이를 정의한다면 표준에 명시적인 언급이 거의 없는 이유는 무엇입니까? 이 정보는 ANSI C 표준에서 추론되었거나 다른 곳에서 확립된 것입니까?

답변

연산자 우선순위 및 연관성 정의

연산자 우선순위와 연관성은 언어 표준 자체 내에서 정의됩니다. 표준 문법은 표현식 구성 규칙을 지정합니다. 이러한 규칙을 살펴보면 연산자의 우선순위와 연관성을 도출할 수 있습니다.

예를 들어 C에서 덧셈식(덧셈과 뺄셈)의 문법은 다음과 같습니다.

additive-expression:
  multiplicative-expression
  additive-expression + multiplicative-expression
  additive-expression - multiplicative-expression

이 규칙으로부터 우리는 곱셈 표현식(곱셈과 나눗셈)이 덧셈 표현식의 하위 규칙이기 때문에 덧셈 표현식보다 우선순위가 더 높다는 것을 추론할 수 있습니다. 또한, 덧셈 표현식은 다른 덧셈 표현식으로 재귀적으로 구성될 수 있다는 규칙을 통해 및 - 연산자의 왼쪽에서 오른쪽 결합성을 유추할 수 있습니다.

평가 순서

연산자 우선순위와 연관성, 평가 순서를 구분하는 것이 필수적입니다. 우선순위와 연관성이 연산자 그룹화 방법을 결정하는 반면, 평가 순서는 개별 표현식이 평가되는 순서를 나타냅니다. C에서는 우선순위와 연관성에 따라 엄격하게 평가가 수행된다는 보장이 없습니다.

예를 들어 f1() f2() * f3() 표현식에서 * 연산자는 연산자보다 우선순위가 높으므로 결과적으로 f1() (f2() * f3()) 그룹화에서. 그러나 평가 순서는 정의되어 있지 않으므로 f3(), f1() 또는 f2()가 먼저 평가될 수 있습니다.

논리 OR(||) 연산자와 같은 특정 연산자는 피연산자 평가에 시퀀스를 적용하여 단락을 허용합니다. x에서 || y, x는 항상 y보다 먼저 평가되어 y 평가가 필요한지 결정합니다.

위 내용은 연산자 우선 순위와 연관성 표는 프로그래밍 언어의 표현식 평가에 대해 실제로 무엇을 알려줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.