대입 연산자 “=”는 두 개의 피연산자를 갖는 이항 연산자이다. 연산식에서 우변에서 구해진 값을 좌변의 변수에 저장하는 역할을 한다. 대입연산자는 아래 [표 1]에 보인 바와 같이 여러 가지 종류가 있다. 단순 대입연산자 ‘=’와 관계연산자 ‘==’는 확실히 구분해야 함은 다시 한 번 강조한다.
[표 3.8.1] 대입연산자의 종류
대입연산자 | 수행 동작 |
= | 좌측값을 우측변수로 대입 |
+=, -= | 좌값과 우값을 더한(뺀) 후 좌측에 저장 |
*=, /= | 좌값과 우값을 곱한(나눈) 후 좌측에 저장 |
%= | 좌값을 우값으로 나눈 나머지를 좌측에 저장 |
&=, |=, ^= | 좌값과 우값을 AND/OR/XOR 한 후 좌측에 저장 |
<<=, >>= | 좌값을 우값으로 왼쪽/오른쪽 비트이동한 후 좌측에 저장 |
위 표에서 보듯이 대입연산자들 중 “연산자=” 의 형태를 갖는 것들이 있다. 예를 들어서 다음 두 줄은 같은 일을 수행한다.
a += b;a = a + b; |
이 두 표현식은 완전히 동일하며 보통 줄여서 전자와 같이 사용한다. 또 다른 예로
a += b + 10;a = a + (b+10); |
이 두 줄도 완전히 동일하다. 우변이 먼저 구해진 후 그 값을 이용하여 좌변의 변수를 갱신시키는 것이다. 대입 연산자의 우선 운위가 가장 낮다.
몇몇 예를 다음 표에 더 들었다.
[표 3.8.2] 대입 연산자의 용례들
용례 | 동일식 | 동작 |
x -= 20; | x = x-20; | x에서 20을 뺀다. |
x *= 5; | x = x*5; | x에 5를 곱한다. |
x %=10 | x = x%10 | x에 x를 10으로 나눈 나머지를 저장한다. |
x += y-5 | x=x+(y-5) | x에 (y-5)를 더한다. |
다음 예를 입력하고 결과를 확인하여 보자.
ex03-11.c |
#include "stdio.h"int main(void) {int ia=1, ib=10;ia++;ib -= ia;ia *= ib++;ia %= --ib;printf(“ia:%d, ib:%d”, ia, ib);} |
ia:?? , ib:?? |
단순 대입연산자 =는 한 표현식에서 중복으로 사용할 수 있다. 예를 들면
a = 0;b = 0;c = 0; |
이 세 줄은 다음과 같이 한 줄로 줄일 수 있다.
a = b = c = 0; |
이 때 연산은 오른쪽에서 왼쪽으로 순차적으로 일어난다. 따라서 먼저 c=0을 수행하고 그 결과 값을 다시 b에 대입하고 마지막으로 a에 대입한다.
'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글
C/C++의 bitwise-and 연산 (0) | 2015.05.20 |
---|---|
C/C++의 비트 연산자의 종류 (0) | 2015.05.20 |
C/C++의 증감연산자(++, --) (0) | 2015.05.19 |
C/C++의 조건 연산자(?:) (0) | 2015.05.19 |
C/C++의 논리 연산자 (0) | 2015.05.19 |