C와 C++의 연산자: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
Simryang (토론 | 기여)
잔글 증감 연산자를 부를 때 접두사, 접미사로 직역하기보다는 기존에 사용되는 전위 연산자, 후위 연산자로 부르는게 낫다고 보여서 수정했습니다.
Simryang (토론 | 기여)
잔글 접미사 -> 후위
391번째 줄:
! rowspan=11| 2
| style="border-bottom-style: none" | <code>++</code>
| style="border-bottom-style: none" | 접미사후위 증가
|-
| style="border-bottom-style: none; border-top-style: none" | <code>--</code>
| style="border-bottom-style: none; border-top-style: none" | 접미사후위 감소
|-
| style="border-bottom-style: none; border-top-style: none" | <code>()</code>
587번째 줄:
 
* 예를 들어, <code>++x*3</code>은 약간의 우선순위 규칙(들)이 없어 모호하다. 우선순위 표는 우리에게 이것을 말해준다: <tt>x</tt>는 <tt>*</tt>하기보다 <tt>++</tt>하기가 더 단단히 '제한'하고, 그래서 <tt>++</tt>가 무엇을 하더라도 (지금 또는 나중—아래 참조), 그것은 오직 <tt>x</tt>하는 것을 한다 (그리고 <code>x*3</code>하기가 아니다); 그것은 (<code>++x</code>, <code>x*3</code>)하기와 동일하다.
* 마찬가지로, <code>3*x++</code>와 함께, 후위 연산자 <tt>++</tt>가 전체 표현식이 평가된 이후 작동이 설계되는 곳이지만, 우선순위 표는 오직 <tt>x</tt>가 증가되는 것을 명확하게 만든다 (그리고 <code>3*x</code>가 아니다); 그것은 기능적으로 임시 값이 되는 <tt>tmp</tt>와 함께 (<code>tmp=3*x</code>, <code>++x</code>, <code>tmp</code>)와 같이 동일하다.
[[파일:Precedence 2.png|right|thumb|우선순위 및 바인딩]]
* 우선순위 또는 바인딩의 문제를 추상화한, 오른쪽 그림을 보자. 컴파일러의 직업은 여러 <tt>y</tt>에게 바인딩으로 경쟁하는 단항 연산자들<ref group="참고">이것들을 <tt>3+( . ), 2*( . ), ( . )++, ( . )[ i ]</tt>이라고 부른다.</ref>중 하나인, 표현식으로 도표를 해결하는 것이다. 우선순위 표의 순서는 각 행동에 대한 최종 하위-표현식들으로 해결된다: <tt>( . )[ i ]</tt>은 오직 <tt>y</tt>에 대해 작동하고, <tt>( . )++</tt>은 오직 <tt>y[i]</tt>에 대해 작동하고, <tt>2*( . )</tt>은 오직 <tt>y[i]++</tt>에 대해 작동하고 <tt>3+( . )</tt>은 '오직' <tt>2*((y[i])++)</tt>에 대해 작동한다. 어떤 하위 표현식이 우선순위 표에서 명확한 각 연산자에 의해서 작동되지만 각 연산자의 행위가 우선순위 표에 의해결되지 않을 때를 참고하는 것은 중요하다; 이 예제에서, <tt>( . )++</tt> 연산자는 오직 우선순위 규칙에 의해 <tt>y[i]</tt>에서 작동하지만 단독 바인딩 수준들은 접미사후위 연산자 ++의 타이밍을 표시하지 않는다<ref group="참고">( . )++ 연산자는 오직 <tt>y[i]</tt>이 표현식에서 평가된 후에 영향을 끼친다.</ref>.
 
다중-문자 순서들을 포함하고 있는 연산자의 대부분은 각 문자의 연산자 이름에서 내장된 "이름"이 주어진다. 예를 들어, <tt>+=</tt> 및 <tt>-=</tt>은 더 자세한 "덧셈에 의한 할당" 및 "뺄셈에 의한 할당" 대신에, '덧셈 등호(들)' 및 '뺄셈 등호(들)'이라고 자주 부른다.