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 중국어 웹사이트의 기타 관련 기사를 참조하세요!