안녕하세요.
이번에는 변수와 변수의 연결고리인 연산자를 정리하겠습니다.
1. 용어 정리
int num;
num = 210;
> 참고 예제
1) 좌변값(L-Value)
- 좌변값은 대입 연산자 왼쪽에 올 수 있는 값을 말합니다.
- 위의 변수 num 을 예로 들 수 있습니다.
- 실제 주소를 가진 데이터 객체입니다.
- 변수만이 올 수 있고, 상수는 올 수 없습니다.(상수는 저장 위치 변경 대상이 아니기 때문입니다.)
2) 우변값(R-Value)
- 우변값은 대입 연산자 오른쪽에 올 수 있는 값을 말합니다.
- 위의 상수 210 을 예로 들 수 있습니다.
- 읽기만 가능한 값만을 사용할 수 있습니다.
- 따라서 상수와 변수 전부 올 수 있습니다.
3) 피연산자(Operand)
- 연산자의 대상이 되는 것들을 의미합니다.
- 위의 예에서는 변수 num 과 상수 210 이 피연산자라고 볼 수 있습니다.
2. 이항 연산자
- 이항 연산자란 피연산자가 2개인 연산자를 말합니다.
- 예를 들어 1 + 2 라는 덧셈을 보았을 때, + 가 연산자, 1 과 2는 피연산자가 됩니다.
더보기
1. 대입 연산자 : =
1) 의미
- 대입 연산자란 변수에 값을 대입하는 것을 말합니다.
2) 사용구조
int num;
num = 210;
> 여기서 "=" 가 대입 연산자 입니다.
2. 덧셈 연산자 : +
1) 의미
- 덧셈 연산자란 좌우의 두 값을 더 하는 연산자를 말합니다.
2) 상수 + 상수
printf("%d", 15 + 120);
3) 변수 + 변수
int income;
int salary = 2500000;
int incentive = 5000000;
income = salary + incentive;
4) 상수 + 변수(변수 + 상수)
int a;
a = a + 1;
3. 뺄셈 연산자 : -
1) 의미
- 뺄셈 연산자란 앞에 있는 수에서 뒤에 있는 수를 빼는 연산자를 말합니다.
2) 사용예
int deposit = 10000000;
int withdraw = 1200000;
deposit = deposit - withdraw;
4. 곱셈 연산자 : *
1) 의미
- 곱셈 연산자란 좌우의 두 값을 곱하는 연산자를 말합니다.
2) 사용예
double stock = 1000000;
stock = stock * 1.5;
5. 나눗셈 연산자 : /
1) 의미
- 나눗셈 연산자란 오른쪽에 있는 값으로 왼쪽에 있는 값을 나누는 것을 말합니다.
2) 부동소수점형의 나눗셈
double ImSeven;
ImSeven = 56.0/8.0;
> 이 경우 7 이 나오게 됩니다.
3) 정수형의 나눗셈
- 정수형은 소수부를 가질 수 없으므로 소수부는 전부 버려집니다.
int num;
num = 5/3;
> 이 경우 1 이 나오게 됩니다.
> 5/3 는 수학적으로 1.666666... 이 나오게 되는데, 이 때 0.66666... 의 소수부를 전부 버리는 것을 알 수 있습니다.
6. 나머지 연산자 : %
1) 의미
- 나머지 연산자란 오른쪽에 있는 정수로 왼쪽에 있는 정수를 나누었을 때의 나머지를 구하는 연산자입니다.
2) 정수형
- 나머지 연산자는 정수형 연산만 가능하고, 부동소수점형 연산은 불가능합니다.
3) 사용예
int num;
num = 19%3;
> 이 경우 나머지는 1 이 나오게 됩니다.
7. 관계 연산자 : >, <, >=, <=, ==, !=
1) 의미
- 관계 연산자란 왼쪽에 있는 값과 오른쪽에 있는 값을 비교하여 참(1) 또는 거짓(0)의 결과로 반환하는 연산자입니다.
2) 종류 및 사용 예
int a = 10;
int b = 5;
a > b; // true(1)
a < b; // false(0)
a >= b; // true(1)
a <= b; // false(0)
a == b; // false(0)
a != b; // true(1)
3) 대입 연산자
- 관계 연산자 중 "==" 는 대입 연산자 "=" 와 이항 연산자라는 공통점이 있지만 사용구조에는 차이가 있습니다.
- 전자는 두 값의 관계를 판단하는 거라면, 후자는 오른쪽의 값을 왼쪽에 대입합니다.
- 해당 실수는 빈번히 나타나기 때문에 아래의 예처럼 상수를 왼쪽에, 변수를 오른쪽에 두면 관계 연산의 의도는 작동하지만 대입 연산의 의도는 차단할 수 있기 때문에 아래처럼 사용하는 것을 추천합니다.
int a = 10;
// 관계 연산 가능
11 == a;
// 대입 연산 불가능
11 = a;
3. 단항 연산자
- 단항 연산자란 피연산자가 1개인 연산자를 말합니다.
더보기
1. 부호 연산자 : +, -
1) 의미
- 부호 연산자는 피연산자가 부호를 나타내는 연산자입니다.
2) 부호 연산자 : -
- 변수의 부호 연산자 - 를 붙이게 되면 변수는 음수가 됩니다.
min = -10;
3) 부호 연산자 : +
- 변수의 부호 연산자 + 를 붙이게 되면 변수는 양수가 됩니다.
- 이는 생략이 가능합니다
2. 크기 연산자 : sizeof
1) 의미
- 크기 연산자는 피연산자의 크기를 바이트 단위로 반환해주는 연산자입니다.
2) 데이터형 크기
sizeof(char) // 1
sizeof(int) // 4
sizeof(float) // 4
sizeof(double) // 8
3) 변수 크기
int num = 10;
double dec = 3.14;
sizeof(num); // 4
sizeof(dec); // 8
> 변수의 크기를 구할 때는 () 를 생략 가능합니다.
3. 증감 연산자 : ++, --
1) 의미
- 증가 연산자는 피연산자의 값을 1만큼 증가시키는 연산자입니다.
- 감소 연산자는 피연산자의 값을 1만큼 감소시키는 연산자입니다.
2) 전위
- 전위란 피연산자의 앞에 위치하는 경우를 의미합니다.
- 이 경우 값을 증감한 후 다른 연산에 사용합니다.
int num;
int a = 0;
num = 2 * ++a; // 증가연산 -> 곱셈연산 -> 대입연산
num = 2 * --a; // 감소연산 -> 곱셈연산 -> 대입연산
3) 후위
- 후위란 피연산자의 뒤에 위치하는 경우를 의미합니다.
- 이 경우 다른 연산이 끝난 후 값을 증감시킵니다.
int num;
int a = 0;
num = 2 * a++; // 곱셈연산 -> 대입연산 -> 증가연산
num = 2 * a--; // 곱셈연산 -> 대입연산 -> 감소연산
4. 논리 연산자
더보기
1. 논리곱 연산자 : &&
1) 의미
- 논리곱 연산자는 왼쪽 값과 오른쪽 값이 전부 True 인 경우 True 를 반환하는 연산자입니다.
- 이항 연산자입니다.
2) 사용예
int a = 4;
int b = 2;
a > 3 && b < 5 // True
a < 3 && b < 5 // False
a < 3 && b > 5 // False
2. 논리합 연산자 : ||
1) 의미
- 논리합 연산자는 왼쪽 값과 오른쪽 값 중 하나라도 True 라면 True 를 반환하는 연산자입니다.
- 이항 연산자입니다.
2) 사용예
int a = 4;
int b = 2;
a > 3 || b < 5 // True
a < 3 || b < 5 // True
a < 3 || b > 5 // False
3. 논리부정 연산자 : !
1) 의미
- 논리부정 연산자는 값의 참과 거짓을 반전시키는 연산자입니다.
- 단항 연산자입니다.
2) 사용예
int a = 4;
a > 3 // True
!(a > 3) // False
int b = 2;
b > 5 // False
!(b > 5) // True
5. 연산자 우선순위
- 연산자는 전체적으로 괄호 연산자 > 단항 연산자 > 이항 연산자 순입니다.
| 우선순위 | 연산자 | 종류 |
| 1 | () | 괄호 |
| 2 | a++, a-- | 증감(후위) |
| 3 | ++a, --a, +a, -a, sizeof, ! | 증감(전위) / 부호 / 크기 / 논리부정 |
| 4 | *, /, % | 곱셈, 나눗셈, 나머지 |
| 5 | +, - | 덧셈, 나눗셈 |
| 6 | >, <, >=, <=, | 관계(대소비교) |
| 7 | ==, != | 관계(동등비교) |
| 8 | && | 논리곱 |
| 9 | || | 논리합 |
| 10 | = | 대입 |
'C > Study' 카테고리의 다른 글
| C언어 : 7. 분기 제어문 (0) | 2026.05.19 |
|---|---|
| C 언어 : 6. 루프 제어문 (0) | 2026.05.19 |
| C언어 : 4. 문자열과 입출력 (0) | 2026.05.18 |
| C언어 : 3. 데이터형 (0) | 2026.05.18 |
| C언어 : 2. 첫 프로그램으로 보는 구조 (0) | 2026.05.18 |
