C언어 대입 연산자는 우변의 값을 좌변에 대입시켜서 좌변의 값을 갱신합니다. x += y
연산은 x = x + y
와 동일합니다. x *= y
연산은 x = x * y
와 동일합니다. x /= y
연산은 x = x / y
와 동일합니다.
C언어 대입 연산자
C언어 대입 연산자의 종류에는 =
, +=
, -=
, *=
, /=
, %=
등이 있습니다.
연산자 | 예제 | 정답 |
---|---|---|
= |
x = y |
x = y |
+= |
x += y |
x = x + y |
-= |
x -= y |
x = x - y |
*= |
x =* y |
x = x * y |
/= |
x /= y |
x = x / y |
%= |
x %= y |
x = x % y |
x += y
대입 연산자는 등호 기호 =
를 중심으로 우변의 값을 좌변에 대입합니다. x += y
수식은 좌변의 x
값이 우변의 +y
만큼 증가함을 표현합니다. 따라서 x = x + y
가 됩니다.
#include<stdio.h>
void main() {
int x = 2;
int y = 3;
printf("%d\n", x += y); //현재 x = 2이고, x = x + y 이므로 x = 5가 되었습니다.
printf("%d\n", x += y); //현재 x = 5이고, x = x + y 이므로 x = 8이 되었습니다.
printf("%d\n", x += y); //현재 x = 8이고, x = x + y 이므로 x = 11이 되었습니다.
}
결과
5
8
11
x += y
와 x + y
의 차이점은 x + y
는 변수 x
를 증가시키지 않습니다.
#include<stdio.h>
void main() {
int x = 2;
int y = 3;
printf("%d\n", x + y); //현재 x = 2이고, y = 3 이므로 x + y = 5입니다.
printf("%d\n", x + y); //현재 x = 2이고, y = 3 이므로 x + y = 5입니다.
printf("%d\n", x + y); //현재 x = 2이고, y = 3 이므로 x + y = 5입니다.
}
결과
5
5
5
x -= y
대입 연산자는 등호 기호 =
를 중심으로 우변의 값을 좌변에 대입합니다. x -= y
수식은 좌변의 x
값이 우변의 -y
만큼 감소함을 표현합니다. 따라서 x = x - y
가 됩니다.
#include<stdio.h>
void main() {
int x = 20;
int y = 4;
printf("%d\n", x -= y); //현재 x = 20 입니다. x = x - y 이므로 x = 16 입니다.
printf("%d\n", x -= y); //현재 x = 16 입니다. x = x - y 이므로 x = 12 입니다.
printf("%d\n", x -= y); //현재 x = 12 입니다. x = x - y 이므로 x = 8 입니다.
}
결과
16
12
8
x -= y
와 x - y
의 차이점은 x - y
는 변수 x
를 감소시키지 않습니다.
#include<stdio.h>
void main() {
int x = 20;
int y = 4;
printf("%d\n", x - y); //현재 x = 20이고, y = 4 이므로 x - y = 16입니다.
printf("%d\n", x - y); //현재 x = 20이고, y = 4 이므로 x - y = 16입니다.
printf("%d\n", x - y); //현재 x = 20이고, y = 4 이므로 x - y = 16입니다.
}
결과
16
16
16
x *= y
대입 연산자는 등호 기호 =
를 중심으로 우변의 값을 좌변에 대입합니다. x *= y
수식은 좌변의 x
값이 우변의 y
만큼 곱해짐을 표현합니다. 따라서 x = x * y
가 됩니다.
#include<stdio.h>
void main() {
int x = 1;
int y = 2;
printf("%d\n", x *= y); //현재 x = 1 입니다. x = x * y 이므로 x = 2 입니다.
printf("%d\n", x *= y); //현재 x = 2 입니다. x = x * y 이므로 x = 4 입니다.
printf("%d\n", x *= y); //현재 x = 4 입니다. x = x * y 이므로 x = 8 입니다.
}
결과
2
4
8
x * y
와 x *= y
의 차이점은 x * y
는 변수 x
에 곱셈이 적용되지 않습니다.
#include<stdio.h>
void main() {
int x = 1;
int y = 2;
printf("%d\n", x * y); //현재 x = 1 입니다. x = x * y 이므로 x = 2 입니다.
printf("%d\n", x * y); //현재 x = 1 입니다. x = x * y 이므로 x = 2 입니다.
printf("%d\n", x * y); //현재 x = 1 입니다. x = x * y 이므로 x = 2 입니다.
}
결과
2
2
2
x /= y
대입 연산자는 등호 기호 =
를 중심으로 우변의 값을 좌변에 대입합니다. x /= y
수식은 좌변의 x
값이 우변의 y
만큼 나눠짐을 표현합니다. 따라서 x = x / y
가 됩니다.
#include<stdio.h>
void main() {
int x = 200;
int y = 2;
printf("%d\n", x /= y); //현재 x = 200 입니다. x = x / y 이므로 x = 100 입니다.
printf("%d\n", x /= y); //현재 x = 100 입니다. x = x / y 이므로 x = 50 입니다.
printf("%d\n", x /= y); //현재 x = 50 입니다. x = x / y 이므로 x = 25 입니다.
}
결과
100
50
25
x / y
와 x /= y
의 차이점은 x / y
는 변수 x
에 나눗셈이 적용되지 않습니다.
#include<stdio.h>
void main() {
int x = 200;
int y = 2;
printf("%d\n", x / y); //현재 x = 200 입니다. x = x / y 이므로 x = 100 입니다.
printf("%d\n", x / y); //현재 x = 200 입니다. x = x / y 이므로 x = 100 입니다.
printf("%d\n", x / y); //현재 x = 200 입니다. x = x / y 이므로 x = 100 입니다.
}
결과
100
100
100
x %= y
대입 연산자는 등호 기호 =
를 중심으로 우변의 값을 좌변에 대입합니다. x %= y
수식은 좌변의 x
값이 우변의 y
값으로 나눈 후 몫을 제외한 나머지로 변환됩니다. 따라서 x = x % y
가 됩니다.
50
을 11
로 나눌 경우 몫은 4
이고 나머지는 6
입니다. 나머지가 6
이므로 변수 x
는 6
으로 변했습니다. 이어서 변수 x
가 6
일 때 y = 11
로 나눌 경우 몫의 정수값은 0
밖에 없습니다. 따라서 몫 0
이고 나머지는 6
이됩니다.
#include<stdio.h>
void main() {
int x = 50;
int y = 11;
printf("%d\n", x %= y); //현재 x = 50 입니다. x = (x % y) = (11 * 4 + 6) 에서 나머지는 6이므로 x = 6 입니다.
printf("%d\n", x %= y); //현재 x = 6 입니다. x = (x % y) = (6 * 0 + 6) 에서 나머지는 6이므로 x = 6입니다.
printf("%d\n", x %= y); //현재 x = 6 입니다. x = (x % y) = (6 * 0 + 6) 에서 나머지는 6이므로 x = 6입니다.
}
결과
6
6
6
x % y
와 x %= y
는 연속적인 연산시 각 식에 대한 연산 결과는 같습니다. 하지만 x
변수의 값은 서로 다릅니다. x %= y
의 연속적인 연산은 변수 x
가 나머지 6
으로 변한 상태입니다. 하지만 x % y
의 단순 연산은 변수 x
는 계속 고정된 50
입니다.
#include<stdio.h>
void main() {
int x = 50;
int y = 11;
printf("%d\n", x % y); //현재 x = 50 입니다. x = (x % y) = (11 * 4 + 6) 에서 나머지는 6이므로 x = 6 입니다.
printf("%d\n", x % y); //현재 x = 50 입니다. x = (x % y) = (11 * 4 + 6) 에서 나머지는 6이므로 x = 6 입니다.
printf("%d\n", x % y); //현재 x = 50 입니다. x = (x % y) = (11 * 4 + 6) 에서 나머지는 6이므로 x = 6 입니다.
}
결과
6
6
6
대입 연산자 교차 사용
대입 연산자를 교차 사용시 좌변의 변수값이 계속 변동됨을 유의합니다.
#include<stdio.h>
void main() {
int x = 2;
int y = 3;
printf("%d\n", x = y); // x = 2였지만, x = y = 3 이므로, x = 3 으로 변경됩니다.
printf("%d\n", x += y); // 현재 x = 3 이고, y = 3 입니다. x += y 는 x = (x + y) 이므로, x = (3 + 3) = 6 입니다.
printf("%d\n", x -= y); // 현재 x = 6 이고, y = 3 입니다. x -= y 는 x = (x - y) 이므로, x = (6 - 3) = 3 입니다.
printf("%d\n", x *= y); // 현재 x = 3 이고, y = 3 입니다. x *= y 는 x = (x * y) 이므로, x = (3 * 3) = 9 입니다.
printf("%d\n", x /= y); // 현재 x = 9 이고, y = 3 입니다. x /= y 는 x = (x / y) 이므로, x = (9 / 3) = 3 입니다.
printf("%d\n", x %= y); // 현재 x = 3 이고, y = 3 입니다. x %= y 는 x = (x % y) 이므로, x = (3 % 3) = 0 입니다.
}
결과
3
6
3
9
3
0
산술 연산자는 교차 사용시 좌변의 변수값이 달라지지 않습니다.
#include
void main() {
int x = 2;
int y = 3;
printf("%d\n", x = y); // x = 2였지만, x = y = 3 이므로, x = 3 으로 변경됩니다.
printf("%d\n", x + y); // 현재 x = 3 이고, y = 3 입니다. x + y 는 x = (x + y) 이므로, x = (3 + 3) = 6 입니다.
printf("%d\n", x - y); // 현재 x = 3 이고, y = 3 입니다. x - y 는 x = (x - y) 이므로, x = (3 - 3) = 0 입니다.
printf("%d\n", x * y); // 현재 x = 3 이고, y = 3 입니다. x * y 는 x = (x * y) 이므로, x = (3 * 3) = 9 입니다.
printf("%d\n", x / y); // 현재 x = 9 이고, y = 3 입니다. x / y 는 x = (x / y) 이므로, x = (3 / 3) = 1 입니다.
printf("%d\n", x % y); // 현재 x = 3 이고, y = 3 입니다. x % y 는 x = (x % y) 이므로, x = (3 % 3) = 0 입니다.
}
결과
3
6
0
9
1
0
대입 연산자의 기호를 중심으로 우변을 좌변에 대입한다는 개념이 공통된 사항입니다.