<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=AndreaSmalltalkLecture%3AQnA_12</id>
	<title>AndreaSmalltalkLecture:QnA 12 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=AndreaSmalltalkLecture%3AQnA_12"/>
	<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=AndreaSmalltalkLecture:QnA_12&amp;action=history"/>
	<updated>2026-04-21T08:12:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://workspace.onionmixer.net/wiki/index.php?title=AndreaSmalltalkLecture:QnA_12&amp;diff=757&amp;oldid=prev</id>
		<title>Onionmixer: 안드레아::질문과답-12 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=AndreaSmalltalkLecture:QnA_12&amp;diff=757&amp;oldid=prev"/>
		<updated>2013-12-05T15:21:34Z</updated>

		<summary type="html">&lt;p&gt;안드레아::질문과답-12 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;질문과 답변-12::전치와 후치 연산자&lt;br /&gt;
&lt;br /&gt;
==전치와 후치 연산자==&lt;br /&gt;
&lt;br /&gt;
안녕하세요? 김찬홍입니다. 전치 연산자와 후치 연산자는 원어로 적으면 prefix operator, postfix operator입니다. 대부분 이를 &amp;#039;전위 표기식 연산자&amp;#039;, &amp;#039;후위 표기식 연산자&amp;#039;라 하고, 제가 즐겨 쓰는 한글 언어에서는 &amp;#039;앞가지 연산자&amp;#039;, &amp;#039;뒷가지 연산자&amp;#039;라 부르고 있습니다. 어찌되었건 이는 연산자와 연산수의 위치 관계를 나타낼 때 사용하는 말입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
우리가 흔히 쓰는 연산자는 중치 연산자, 중위 표기식 연산자, 속가지 연산자, infix operator라고 부릅니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
3 + 4&lt;br /&gt;
(2 + 5) / 7&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
등과 같이 연산수와 연산수 사이에, 즉 연산수 중간에 연산자가 배치되어 있습니다.중위 표기식 여산자는 우리가 수학에서 가장 즐겨쓰는 표현이기 때문에 이해하기가 가장 쉽다는 장점이 있습니다. 그러나..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
3 + 4 * 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
의 경우에 &amp;quot;+&amp;quot;를 먼저 계산해야 할지, &amp;quot;*&amp;quot;를 먼저 계산해야 할지를 결정해야 합니다. 즉 어떤 연산자를 먼저 연산수와 결합할지를 결정해야 하는데, 이것이 &amp;#039;연산의 우선순위&amp;#039;(operator&amp;#039;s precedence)입니다. 보통 중위 표기식 연산자를 컴퓨터에서 처리하려면 연산자의 우선 순위를 담고 있는 사전이 필요합니다. 그래서 이 사전에서 연산자를 찾아보고 이것이 어떤 우선권을 갖는지를 검사해서 그대로 명령을 실행하는 것입니다. 만약 연산의 우선순위를 바꾸려면 괄호를 사용하면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
전위 표기식 연산자는 연산자가 연산수 앞에 옵니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
+ 3 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위는 3과 5를 더라하는 말입니다. 그런데 여러 개의 연산자가 올 때에는 혼동을 피하기 위해서 괄호를 반드시 붙여주어야 합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
(+ (* 2 5) 8)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위의 식을 중위 표기식으로 바꾸면&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
(2 * 5) + 8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 될 것입니다. 전위 표기식 연산자는 LISP 계통의 언어에서 사용합니다. 괄호가 많아서 이해하기가 어려울 수 있지만, 컴퓨터 입장에서는 중위표기 연산자보다 처리하기가 단순하다는 이점이 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
후위 표기식 연산자는 연산자가 연산수 뒤에 옵니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
3 5 +&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위의 식은 3과 5를 더한다는 의미입니다. 후위 표기식 연산자는 우리말을 닮았습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
3 4 * 2 / 10 - 5 +&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위의 식을 우리말로 풀어보면&lt;br /&gt;
&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;&amp;quot;3에 4를 곱하고 2로 나눠서 10 을고 5를 더한다&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
로 읽을 수 있습니다. 또한&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
3 4 5 + *&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
의 경우는&lt;br /&gt;
&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;&amp;quot;3에, 4와 5를 더해서, 곱한다&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
로 읽으면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
2 5 4 7 * + -&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이것은&lt;br /&gt;
&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;2에, 5에, 4와 칠을 곱하고, 더한 뒤, 빼라&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
로 읽으 수 있습니다. 후치 연산자는 연산의 우선순위도 없고 괄호를 쓸 필요도 없어서 매우 편리하지만, 역시 중위표기식보다는 낯설기 때문에 어려워 보입니다. 후위 표기식 연산자의 경우는 주로 Forth와 같은 Stack 기반 언어에서 사용합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
보통 전위, 후위 연산자라고 말하면 이와 같이 말할 수 있겠는데, C/C++ 언어에 한정해서 말하는 경우가 있습니다. C++에 있는 ++/-- 연산자는 전위 표기와 후위 표기를 모두 할 수 있기 때문입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
i++&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이나&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
++i&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
나 똑같이 변수 i에서 1을 더합니다. 또한&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
i--&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
나&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
--i&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
나 똑같이 변수에서 1을 뺍니다. 그러나 결과는 다릅니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
a = 3;&lt;br /&gt;
b = a++;		// a = 4, b = 3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
의 경우 b에는 3이 남습니다. 왜냐하면 a를 먼저 b에 넣은 다음 ++를 하기&lt;br /&gt;
때문입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
a = 3;&lt;br /&gt;
b = ++a;		// a = 4, b = 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위의 경우는 a, b 모두 4가 됩니다. 즉 b에 a를 넣기 전에 ++을 수행했기 때문입니다. 이와 같이 ++/-- 연산자는 전치, 후치에 따라서 값이 달라지기 때문에 매우 신중하게 써야 합니다. 잘못 쓰면 바탕글을 읽기 어렵게 만들기 때문에 간단하개 사용하는 것이 좋습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
요약하면, 일반적인 의미에서는 연산자와 연산수의 관계를 설명하고, C/C++언어에서는 증감 연산자(++ --)의 위치에 따른 값의 변화를 나타낼 때 사용합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
참고로 임인건님이 쓰신 Turbo C 정복 이라는 책을 권합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:AndreaSmalltalkLecture]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>