3.7 증감연산자 [doc] [smts]
증감 연산자 ++와 --는 한 개의 피연산자를 갖는 단항 연산자로서 피연산자를 1씩 증가 혹은 감소시키는 것이다. 피연산자로서 정수형과 실수형 모두 사용할 수 있으나 주로 정수형 변수에 사용된다. 증감연산자는 수식을 간결하게 만들어주므로 디버깅이나 실행속도 면에서 좀 더 효율적이다. 이 연산자는 C/C++ 에서 매우 자주 쓰이는 연산자이지만 잘못 사용한 경우에는 발견하기 힘든 오류을 발생시킬 수 있으므로 주의해서 사용해야 한다.
[표 3.71] 증감 연산자의 종류와 용법
형식 | 의미 |
++x | x를 먼저 1증가시킨 후 그 값을 사용 |
--x | x를 먼저 1감소시킨 후 그 값을 사용 |
x++ | x값을 먼저 사용한 후 1 증가 |
x-- | x값을 먼저 사용한 후 1 감소 |
위 표에서와 같이 증감연산자는 변수 앞에도 붙을 수 있고 뒤에 올수도 있다. ++x 나 x++ 는 프로그램에서 다른 조건식이나 수식에 연결되지 않고 단일문으로 쓰일 경우에는 같은 결과를 얻지만 수식의 일부분으로 사용할 경우에는 그 의미가 달라질 수 있다. 다음 예를 보자.
ex03-09.c |
#include<stdio.h>int main(){int ia, ib;ia = ib = 1;ia++;ib--;printf(“ia:%d, ib:%d”, ia, ib);} |
이 예에서 출력되는 ia와 ib값은 각각 2와 0이다. ia++, ib--은 각각 다음과 같다.
ia = ia + 1;ib = ib - 1; |
다음 예에서와 같이 증감연산자가 다른 연산자와 사용될 때에는 주의해야 한다.
ex03-10.c |
#include<stdio.h>int main(){short sa = 10, sb = 10, sx, sy;sa++;++sb;printf(“sa:%d, sb:%d\n”, sa, sb);sx = --sa;sy = sb--;printf(“sa:%d, sb:%d\n”, sa, sb);printf(“sx:%d, sy:%d\n”, sx, sy);} |
sa:11, sb:11sa:10, sb:10sx:10, sy:11 |
이 예제에서 sa에 저장되는 값과 sb에 저장되는 값은 각각 10과 11이다. sx=--sa 에서는 sx에 대입되기 전에 먼저 sa값이 1 감소하고 그 후에 그 값이 sx에 대입된다. sy=sb-- 에서는 sy에 sb값이 먼저 대입되고 sb값이 1 감소한다. 증감연산자가 앞에 붙느냐 혹은 뒤에 붙느냐에 따라 동작의 순서가 달라진다는 점에 유의해야 한다.
관례적으로 증감연산자를 쓰지 말아야 할 경우가 있다.
하나의 변수가 수식 내에서 두 번 이상 사용될 경우에는 증감연산자를 사용하지 않는다. 예: y = x*2 + x++
한 변수가 어떤 함수의 인자로 두 번 이상 사용될 경우에는 이 변수에 증감 연산자 ++, --를 사용하지 않는다. 예: func(x*2, x++)
그 외에도 프로그램 작성자가 혼동의 여지가 있을 것 같다면 명확하게 작성하도록 유의해야 한다.
'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글
C/C++의 비트 연산자의 종류 (0) | 2015.05.20 |
---|---|
C/C++의 대입연산자 (0) | 2015.05.20 |
C/C++의 조건 연산자(?:) (0) | 2015.05.19 |
C/C++의 논리 연산자 (0) | 2015.05.19 |
3.4 관계 연산자 (0) | 2015.05.19 |