>  기사  >  백엔드 개발  >  C는 할당문의 오른쪽 및 왼쪽 피연산자를 어떻게 평가합니까?

C는 할당문의 오른쪽 및 왼쪽 피연산자를 어떻게 평가합니까?

DDD
DDD원래의
2024-10-29 18:28:45600검색

 How Does C   Evaluate the Right and Left Operands in Assignment Statements?

C의 할당문 평가 순서

mp[10] = mp와 같이 맵 요소에 값을 할당하는 경우. size()에서는 표현식의 평가 순서가 중요해집니다. 이 특정 표현식은 "0 1"이라는 예상치 못한 결과를 산출하며 이는 C에서 지정된 평가 순서에 대한 의문을 제기합니다.

C 표준에서는 함수 호출과 같은 특정 작업에 대해 평가 순서가 지정되지 않도록 지정합니다. 그러나 =와 같은 할당 연산자는 오른쪽 및 왼쪽 피연산자 평가 후에 순서가 지정되므로 지정된 순서에 간격이 남습니다. 이러한 모호함으로 인해 세련된 제안이 필요하게 되었습니다.

최근 C 표준 제안(N4228)에서는 특정 사례에 대한 평가 순서를 지정하여 이 문제를 해결하려고 합니다. N4228에 따르면 이 특정 할당 표현식은 두 피연산자 평가가 순서대로 이루어지지 않는 지정되지 않은 동작 범주에 속합니다.

N4228(P0145R0)의 개정된 버전에 따라 이제 이 동작이 지정됩니다. 수정된 섹션 [expr.ass]에서는 할당 연산자의 오른쪽 피연산자가 왼쪽 피연산자보다 먼저 순서가 지정됨을 명시합니다. 따라서 주어진 표현식에서 mp.size()가 먼저 평가되고 그 결과가 mp[10]에 할당됩니다. 업데이트된 C 17 표준에서는 이 평가 순서가 명확해질 것으로 예상됩니다.

요약하면 할당문의 평가 순서가 특정 경우에 지정되지 않은 채로 남아 있지만 최신 C 표준 제안(N4228)은 이러한 규칙을 개선하는 것을 목표로 합니다. 현재 허용되는 사양인 P0145R3은 할당의 오른쪽 피연산자가 왼쪽 피연산자보다 먼저 평가되어 주어진 표현식의 모호성을 해결함을 명시합니다.

위 내용은 C는 할당문의 오른쪽 및 왼쪽 피연산자를 어떻게 평가합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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