일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 플라스크
- ADP
- airflow
- mlops
- 개발자취업
- 쇼핑몰예제
- 프로그래밍
- docker
- 장고
- flask
- 개발자
- c
- 장고 기초 강의
- cpp
- 웹개발
- 기초강의
- 도커 컴포즈
- 파이썬강의
- Django
- Python
- 도커
- 파이썬 장고
- 장고 튜토리얼
- 인공지능
- 파이썬
- 에어플로우 기초강의
- 개발언어
- 예제프로젝트
- c++
- C언어
- Today
- Total
TITEDIOS 편한 코딩
C 기초강의: #8 연산자 (3) 본문
이전 포스티에서 연산자를 모두 알아보았다고 했습니다. 사실, 모두 알아본 것은 아닙니다. 저번 포스팅까지 배웠던 연산자 외에 유용한 몇 가지 연산자를 알아보겠습니다. 오늘 알아볼 연산자를 통해 다양한 데이터 조작을 할 수 있게 해줍니다. 이 포스팅에서는 형 변환 연산자, 복합 대입 연산자, 비트 연산자에 대해 자세히 알아보겠습니다.
1. 형 변환 연산자 (Type Casting)
형 변환 연산자는 데이터 타입을 다른 데이터 타입으로 변환할 때 사용됩니다. C언어에서는 암시적(자동) 형 변환과 명시적 형 변환이 있습니다.
암시적 형 변환
컴파일러가 자동으로 수행하는 형 변환입니다. 보통 더 작은 데이터 타입이 더 큰 데이터 타입으로 변환될 때 발생합니다.
코드 복사
int a = 5;
float b = a; // 암시적 형 변환: int -> float
명시적 형 변환
프로그래머가 직접 형 변환을 지정하는 방식입니다. 필요할 때마다 (타입) 형식으로 사용합니다.
코드 복사
int a = 10, b = 3;
float result = (float)a / b; // 명시적 형 변환: int -> float
여기서 a를 float로 변환하여 부동 소수점 연산을 수행하게 하며, 결과는 3.3333...이 됩니다.
2. 복합 대입 연산자
복합 대입 연산자는 변수에 값을 할당하면서 동시에 특정 연산을 수행하는 연산자입니다. 이 연산자는 코드의 간결성을 높이고, 가독성을 좋게 해줍니다. 코드의 간결함 때문에 이러한 코드를 많이 작성합니다.
- +=: 더한 후 대입 (a += b는 a = a + b와 같습니다)
- -=: 뺀 후 대입 (a -= b는 a = a - b와 같습니다)
- *=: 곱한 후 대입 (a *= b는 a = a * b와 같습니다)
- /=: 나눈 후 대입 (a /= b는 a = a / b와 같습니다)
- %=: 나머지를 구한 후 대입 (a %= b는 a = a % b와 같습니다)
int a = 10;
a += 5; // a = a + 5; a는 15가 됩니다
a *= 2; // a = a * 2; a는 30이 됩니다
a -= 10; // a = a - 10; a는 20이 됩니다
3. 비트 연산자
비트 연산자는 정수의 비트 단위 연산을 수행하는 데 사용됩니다. C언어에서 비트 연산자는 주로 하드웨어 제어, 최적화된 코딩, 암호화 등에서 사용됩니다. 비트 단위의 연산이므로 좀 어려우실 수도 있습니다. 손으로 직접 이진수를 써서 연산을 해보시면 이해가 빠르실 것입니다.
- & (비트 AND): 두 비트가 모두 1일 때만 1이 됩니다.
- | (비트 OR): 두 비트 중 하나라도 1이면 1이 됩니다.
- ^ (비트 XOR): 두 비트가 서로 다를 때 1이 됩니다.
- ~ (비트 NOT): 비트를 반전시킵니다 (1은 0으로, 0은 1로).
- << (왼쪽 시프트): 비트를 왼쪽으로 이동시키고, 오른쪽에 0을 채웁니다.
- >> (오른쪽 시프트): 비트를 오른쪽으로 이동시키고, 왼쪽에 부호 비트를 채웁니다.
코드 복사
int x = 6; // 0110 in binary
int y = 3; // 0011 in binary
int andResult = x & y; // 0010 (2)
int orResult = x | y; // 0111 (7)
int xorResult = x ^ y; // 0101 (5)
int notResult = ~x; // 1001 (2's complement representation, -7)
int leftShift = x << 1; // 1100 (12)
int rightShift = x >> 1;// 0011 (3)
비트 연산자는 효율적인 메모리 사용과 데이터 처리 속도 개선에 중요한 역할을 합니다. 예를 들어, 플래그를 설정하거나 해제하는 데 사용되며, 특정 비트를 확인하는 등의 작업에서 매우 유용합니다.
4. 콤마 연산자
콤마 연산자는 가장 낮은 연산자 우선순위를 가지며, 왼쪽에서 오른쪽으로 평가됩니다. 콤마 연산자로 연결된 표현식들은 순서대로 실행되지만, 전체 표현식의 결과값은 마지막 표현식의 결과만을 반환합니다.
int a, b, c;
a = (b = 3, c = 4); // b = 3과 c = 4를 순차적으로 실행하고, a는 c의 값인 4를 갖게 됩니다.
위 예제에서 b = 3과 c = 4가 순서대로 실행되며, 마지막 표현식인 c = 4의 값인 4가 a에 할당됩니다.
사용 사례
콤마 연산자는 주로 반복문에서 변수 초기화나 여러 변수의 갱신을 한 줄에서 수행할 때 사용됩니다.
반복문에서의 사용
반복문(특히 for 루프)에서 여러 변수를 초기화하거나 업데이트할 때 콤마 연산자를 자주 사용합니다.
for (int i = 0, j = 10; i < j; i++, j--) {
printf("i = %d, j = %d\n", i, j);
}
이 코드에서는 i와 j 변수를 동시에 초기화하고, 매 반복마다 i는 증가하고 j는 감소합니다.
복합 표현식
콤마 연산자를 사용하여 복합 표현식을 한 줄로 줄여 쓸 수 있습니다.
int x, y;
x = 1;
y = (x++, x + 5); // x는 2로 증가하고, y는 x + 5인 6을 갖게 됩니다.
여기서 (x++, x + 5)는 먼저 x++이 실행되어 x가 2가 되고, 이어서 x + 5가 평가되어 y에 할당됩니다.
주의사항
콤마 연산자는 표현식의 평가 순서를 명확하게 제어할 수 있지만, 남용하면 코드의 가독성을 해칠 수 있습니다. 특히, 한 줄에 너무 많은 연산이 들어가면 유지 보수하기 어려운 코드가 될 수 있습니다. 따라서 콤마 연산자를 사용할 때는 코드의 가독성과 명확성을 고려하여 신중하게 사용하는 것이 좋습니다.
결론
형 변환 연산자, 복합 대입 연산자, 비트 연산자는 C언어에서 중요한 역할을 하는 연산자입니다. 이 연산자들을 잘 활용하면 효율적이고 가독성 높은 코드를 작성할 수 있습니다. 특히 비트 연산자는 하드웨어와 가까운 작업을 수행할 때 매우 유용하므로, 이를 잘 이해하고 활용하는 것이 중요합니다.
도움이 되셨다면 공감 부탁드리겠습니다. 여러분의 공감이 정말 큰 힘이 됩니다.
감사합니다!
'C++' 카테고리의 다른 글
C 기초강의: #10 반복문 - for, while (0) | 2024.08.18 |
---|---|
C 기초강의: #9 비트마스킹 - 비트연산자의 활용 (0) | 2024.08.17 |
C 기초강의: #7 연산자 (2) (0) | 2024.08.10 |
C 기초강의: #6 연산자 (1) (0) | 2024.08.04 |
C 기초강의: #5 변수와 상수, 입력과 출력 (0) | 2024.08.03 |