연산자(operator)는 주어진 데이터에 대해서 계산이나 비교 등을 수행하여 결과 값을 얻어내는 명령어를 말한다. C/C++ 에는 다양한 연산자가 마련되어 있으며 일반적으로 분류하면 다음 표와 같다.


[표 1] 연산자의 종류

구분

연산자

비고

산술 연산자

+  -  *  /  %

%는 나머지 연산자

부호 연산자

+  -

부호 표시

관계 연산자

<  >  <=  >=  ==  !=

대, 소, 등가 관계

논리 연산자

&&  ||  !

AND, OR, NOT

조건 연산자

? :

참, 거짓

증감 연산자

++  --

1증가, 1감소

대입 연산자

=

+=  -=  *=  /=  %=

&=  |=  ^=  <<=  >>=

오른쪽의 값을 왼쪽에 대입

비트 연산자

&  |  ~  ^  <<  >>

AND, OR, NOT, XOR, shift

형변환 연산자

(데이터형)

sizeof 연산자

sizeof

데이터 형의 크기

쉼표 연산자

,

구분

간접 지정 연산자

( ) [ ] -> *

함수, 배열, 구조체, 포인터


연산의 대상이 되는 수치나 변수 값을 피연산자라고 하며, 연산자는 피연산자의 개수에 따라서 이항(二項) 연산자와 단항(短項) 연산자로 나뉜다.


  • 피연산자 : 연산의 대상이 되는 수치나 변수.

  • 이항 연산자 : 피연산자가 두 개인 연산자.

  • 단항 연산자 : 피연산자가 하나인 것.


예를 들어서 덧셈(+)이나 뺄셈(-)은 피연산자가 하나이면 연산을 수행하지 못하고 반드시 두 개가 있어야 그 두 수를 더하거나 뺄 수 있으므로 이항 연산자이다. 이에 반해서 부호연산자(+. -)는 하나의 항의 부호를 규정하는 것이므로 피연산자가 하나이고 단항 연산자이다.


C++ 강좌 전체 목록 >>>


c{c++},n{c0041}

'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글

3.2 산술 연산자와 부호 연산자  (0) 2015.05.19
3.3 형변환  (0) 2015.05.19
C/C++의 goto 명령  (0) 2015.05.19
C/C++의 continue 명령  (0) 2015.05.19
C/C++의 break 명령  (0) 2015.05.19
Posted by 살레시오
,

4.8 goto 명령     [doc]      [smts]

 프로그램 중간에 주소(이름)을 만들어 지정해 주고 goto문을 사용하여 그 지점으로 한 번에 프로그램 수행을 이동할 수 있다.


label:
  .....
  ......
  goto label;

goto 명령은 원하는 곳으로 무조건 이동을 수행한다. 아무 곳으로라도 즉시로 이동할 수 있어 일견 굉장히 편하고 유용한 명령어처럼 보이나 프로그램의 구조를 저해하는 문제점을 내포하고 있어서 일반적으로 잘 쓰이지 않는 명령어이다. 대부분의 경우는 break, continue와 같은 명령어를 이용하여 문제를 해결할 수 있기 때문이다.


하지만 다중루프를 한 번에 빠져나가야 하는 경우에는 break문을 복잡하게 사용하기보다는 goto문이 쓰이기도 한다. 아래의 예를 살펴보자.


  for(...) {
      for (...) {
          for(...) {
              if (...) goto OutOfHere;
          }
      }
  }
OutOfHere:
  ......
  ......

 하지만 goto문은 실제 프로그램에서 거의 쓰이지 않으므로 구체적인 예제는 생략한다.



'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글

3.3 형변환  (0) 2015.05.19
C/C++의 연산자 종류  (0) 2015.05.19
C/C++의 continue 명령  (0) 2015.05.19
C/C++의 break 명령  (0) 2015.05.19
C/C++ 의 do ~ while 반복문  (0) 2015.05.18
Posted by 살레시오
,

4.7 continue 명령     [doc]     [smts]

반복문 안에서 사용되는 continue 명령은 그 뒤의 모든 실행문을 무시하고 반복문의 처음으로 돌아가서 다음 단계를 수행한다.


반복명령어(for, do, while) {
  명령문1;
  continue;
  명령문2;
}

위에서 프로그램이 continue를 만나면 아래의 명령문2를 수행하지 않고 반복문의 다음 단계로 돌아간다. for문의 경우 변환문을 실행한 후 조건 검사를 하여 참이면 다시 반복을 시작할 것이고 while문은 조건 검사를 수행할 것이다.


for (int k=0; k<10; k++) {
   printf(“Hi “);
   continue;
   printf(“there. “);
}
int k=0;
while(k++ <= 10) {
   printf(“Hi “);
   continue;
   printf(“there. “);
}

이 예제를 수행하면 첫 번째 printf() 함수만 실행되므로 “Hi “만 열 번 화면에 출력될 것이다. continue 명령에 의해서 그 뒤의 printf()는 실행되지 않기 때문이다.


 다음 예는 0부터 100까지의 정수 중 3의 배수가 아닌 것들만 출력하는 프로그램이다.


0407-01.c

#include <stdio.h>
int main() {
   for (int ia=0; ia<=100; ia++) {
       if (ia%3 == 0) continue;
       printf("%d ",ia);
   }
}

실행 결과

1 2 4 5 7 8 10 11 13 14 16 17 19 20 22 23 25 26 28 29 31 32 34 35 37 38 40 41 43 44 46 47 49 50 52 53 55 56 58 59 61 62 64 65 67 68 70 71 73 74 76 77 79 80 82 83 85 86 88 89 91 92 94 95 97 98 100


만약 ia%3==0 이 참, 즉 ia가 3의 배수라면 continue 문에 의해 밑의 printf() 함수는 실행되지 않고 다음 단계로 넘어간다.


보통은 조건문과 조합하여 특정 조건이 만족되면 반복문의 시작으로 되돌아가게끔 하는데 사용한다. 다음 예제는 1000 이하의 가장 큰 소수(prime number)를 구하는 것이다.


0407-02.c
#include <stdio.h>
int main() {
  for (int ia = 1000; ia>=2; ia--) {
      int ib = 2;
      while( ib <= ia/2 ) {
          if (ia%ib == 0) break;
          ib++;
      }
      if (ib <= ia/2) continue;
      printf("result: %d\n", ia);  //❷
      break;
  }
}

997


반복 변수 ia가 1000 부터 시작하여 1씩 감소하면서 그 수 가 소수인지 아닌지를 판별하는 것이다. while 반복문으로 2부터 ia/2 까지의 수로 모두 나눠보고 중간에 나누어 떨어지는 경우가 있다면 반복문을 종료한다. 만약 ia가 소수가 아니라면 ib<=ia/2 이 참이므로 다음 수로 넘어간다. 아니라면 (즉, ia가 소수라면) 결과를 표시하고 for 반복문을 빠져나온다.


 break문이 반복문을 완전히 빠져나가게 하는 것이고 continue문은 반복문을 계속 수행하게 한다는 것을 잘 구별해야 한다.



'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글

C/C++의 연산자 종류  (0) 2015.05.19
C/C++의 goto 명령  (0) 2015.05.19
C/C++의 break 명령  (0) 2015.05.19
C/C++ 의 do ~ while 반복문  (0) 2015.05.18
C/C++ 의 while 반복문  (0) 2015.05.18
Posted by 살레시오
,