소프트웨어/C 언어

[C언어]14. 변수의 계산방법, 연산자에 대하여 알아보자. -2- ( 단항연산자 )

리습 2013. 6. 6. 01:00


 안녕하십니까. 리습입니다.


 이제 연산자에 대하여 상세하게 알아보도록 하겠습니다. 우선 단항연산자입니다. 단항연산자는 하나의 요소만을 가지고 특정한 작업을 하도록 하는 연산기호 입니다. 즉 단항연산자가 영향을 주는 대상은 단 한가지 라는 것입니다. 그럼 단항연산자를 하나하나 알아보도록 하겠습니다. 이중 아직 우리가 배우지 않은 부분은 간단하게 개념만 설명하도록 하겠습니다.

 

 부호연산자   ( +  - )

 

부호연산자는 변수를 양의 값을 가질지 음의값을 가질지 결정해주는 연산자입니다. 이렇게 말로 써놓으면 어렵지만 우리는 이미 흔하게 사용하고 있습니다. 변수 A 에 음의 값 -1 을 넣기 위해서 우리는 1의 앞에 - 표시를 해주었습니다. 이것과 마찬가지입니다. 부호연산자를 사용하기 위해선 앞에 -를 넣어주기만 하면되는 것입니다. 예시 코드를 한번 보도록하겠습니다.

 

 코드


 int i = -1;

 

 

 

 이렇게 부호연산자는 단순히 어떤 숫자가 음의 값을 가지는지 , 양의 값을 가지는지 결정지어주는 변수라고 할 수 있습니다. ( 그냥 1 을 넣을 경우 알아서 +1이라고 인식합니다.)

 

 

 포인터 연산자 ( * & -> )

 

 

 포인터는 말 그대로 포인터와 관련되어있는 연산자를 뜻합니다. 포인터란 특정 변수의 메모리 주소를 가리키는 변수를 말하는 것으로 후에 배우게 될것입니다. 사용 예는 다음과 같습니다.

 

 

 코드


 int *ptr = &i;

 

 

 아직 포인터를 배우지 못했기 때문에 이해가 안되시겠지만 이 코드의 의미는 " int 형식으로 읽어내야 하는 데이터가 저장된 공간의 주소를 저장하는 변수 ptr을 만들고 그 안에 변수 i의 주소값을 넣어라" 입니다. 길어보이고 어려워 보이지만 나중엔 다 쉽게 이해하실 수 있습니다.

 

 

 

 증감연산자 ( ++  -- )

 

 

 증감연산자는 변수 안에 저장된 값을 1씩 증가시키는 연산자입니다. 예를 들어 i라는 변수에 7이 저장되있다면 i++ 이라고 쓰면 8이 되는 것이지요. 증감연산자에는 두가지가 있습니다. 증감연산자를 값 앞쪽에 두거나 뒤쪽에두는 것입니다. ++i 라고 쓴다면 i에서 1을 키운 후에 계산이 진행되고 i++은 계산이 끝난 후에 1이 증가되게 됩니다. 예시 코드를 한번 보도록 하겠습니다.

 

 코드

 #include <stdio.h>

int main(void)

{

     int i = 10;

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

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

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

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

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

     return 0;

}

결과

 10

 11

 11

 11

 12

 



 위 코드를 차근차근 분석해보도록 하겠습니다. 우선 int 형 의 i라는 변수를 선언하였습니다. 그리고 이 변수에 10이라는 값을 넣었죠. 그리고 printf 로 화면에 출력을 하게되는데 첫번째 printf에서는 i를 그대로 출력합니다. 그래서 10이 출력되게 되며, 두번재 printf에서는 선행으로 ++을 입력하였기때문에 i 에 1을 더하고 화면에 출력하게 됩니다. 그래서 11이 출력된것입니다. 다음 printf 현재 i가 어떤 값을 가지고 있는지 보여주는 것입니다. 현재 i는 11을 나타내고있으며  네번째 printf에서는 화면에 i를 출력한후 i를 1 증가시키게 됩니다. 그리고 마지막 printf에서 12가 출력되는 것입니다. 

 

 

 

 지금 말로 써놓은 것은 어려워 보이지만 차근차근 생각하시면 이해가 되실것입니다.

 이 ++이라는 연산자는 매우 유용한 연산자인데 우리가 사용하는 for 반복문에서도 ++을 사용할수 있습니다. 

 

 

 코드


 for( int i = 0 ; i <10 ; i++ )

 

 

 

 이런식으로 쓰게되면 i = i + 1 보다 더 보기 좋은 코드가 되는 것입니다.

 

 

  sizeof 연산자 ( sizeof() )

 

 

 sizeof연산자는 차지하고 있는 메모리 공간의 크기를 계산해주는 연산식입니다. 후에 메모리의 크기를 조절할 때 와 문자열(문장)을 사용할때 많이 사용하시게 됩니다.

 

 

 

 

 코드


 printf("%d" , sizeof( int ) ")

 

 

 

  예시 코드는 int 의 메모리 크기를 화면에 출력하는 코드 입니다.

 

 

  캐스트연산자 ( (변환하고싶은 형식) )

 

 

 캐스트 연산자는 특정형식의 변수를 다른 형식으로 강제변환할 때 사용하는 연산자입니다. 예를들어 double 형식의 변수를 char 형식의 변수로 바꿀 때 사용하게 됩니다. 

 

 

 

 코드


 double num = 10;

 int i = (int)num

 

 

 

 double 형식의 num은 일반적인 경우 int 형식의 i 에 데이터를 넣을 수 없지만 캐스트 연산자로 강제 형변환을 하게 되면  넣을수 있게 됩니다. 

 

이렇게 단항연산자에 대하여 알아보았습니다. 연산자는 마치 계산기의 + , - , *, / 와 같습니다. 자신이 필요한 연산자를 잘 이용하면 더 많은 일을 해결하실수 있으실 겁니다. 다음엔 이항 연산자에 대하여 알아보도록 하겠습니다.