프로그램/C언어

[C언어] 단항 연산자

수박이왓섭 2013. 2. 28. 22:43

단항연산자에 대해 작성을 해보겠습니다

저번에 사칙연산에 대해 설명을 했었는데, 그와는 다른 연산 입니다.

사칙연산 같은 경우엔 값들을 더하고 빼고 곱하고 나누고 나머지를 구하고 등등 이였다면

단항 연산자는 한 값을 더하고 빼고 혼자서 지지고 볶고 하는 연산 입니다.

 

단항 연산자는 2가지로 나눌수가 있습니다.

전위형, 후위형 으로

 

전위형

#include<stdio.h>

void main()

{

int a;

a = 1;

printf("%d\n",++a);

}

 

 

 

후위형

#include<stdio.h>

void main()

{

int a;

a = 1;

printf("%d\n",a++);

}

 

 

소스와 결과를 먼저 보여드렸는데, 전위와 후위의 차이점을 발견 하셨나요??

 

두 코드는 매우 비슷합니다. 하지만

printf()문 안에 보시면 전위는 ++a로 a값을 가져오고

후위는 a++로 a값을 가져옵니다.

 

이렇게 값을 가져오니 결과값도 달라진게 보이실 거에요

 

왜 이런 결과가 나왔냐면!!!!

전위는 (++) 먼저 1을 더하고 a값을 출력

후위는 a값을 출력후 (++) 1을 더함.

 

뭐 두개가 같은말 같지만...  살짝 틀립니다.

 

결과를 보시면 알겠지만

전위는 ++이 먼저 실행되 원래 a값에 1을 더해주고나서 a값을 출력하게 됩니다.

후위는 a가 먼저 출력이 되고나서 그다음 a에 ++가 실행되 1이 더해지게 됩니다.

그러니 후위는 a가 출력되고 나서 1이 더해지는 것 이므로 결과는 1로 보이게 됩니다.

그러니깐.. 후위 저 상태에서 다시한번 a를 printf 해보면..

 

 

이렇게 a값에 1이 더해진 것을 확인할수 있습니다.

자.. 그럼 문제..... 이렇게 작성을 하면 어떤 결과값이 나올까요??

 

include<stdio.h>

void main()

{

int a,b;

a = 5;

b = 10;

 

printf("%d\n",++a);

printf("%d\n",a);

printf("%d\n",b++);

printf("%d\n",b);

}

생각해 보신다음에 답을 보세요 ㅋㅋ

 

 

 

 

 

 

 

 

정답은........

6

6

10

11

이렇게 나오게 된답니다 !!

 

끗.........