1. 연산자
산술 연산자와 대입 연산자
- 산술 연산자는 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 등을 포함하며 수학적 연산을 수행하는 데 사용된다.
- 대입 연산자는 변수에 값을 할당할 때 사용되는 = 연산자이다.
int a = 10;
int b = 5;
int sum = a + b; // 덧셈 연산
증감 연산자
- 증감 연산자는 변수의 값을 1씩 증가시키거나 감소시키는 데 사용된다.
- ++는 값을 1 증가시키며, --는 값을 1 감소시킨다.
- 이들은 전위형과 후위형으로 나뉜다.
int x = 5;
x++; // 후위 증가: x는 6이 됨
++x; // 전위 증가: x는 7이 됨
관계 연산자
- 관계 연산자는 두 값을 비교하여 참(1) 또는 거짓(0)을 반환한다.
- 대표적인 관계 연산자로는 ==(같다),!=(같지 않다), <, >, <=, >=가 있다.
int a = 10;
int b = 5;
int result = (a > b); // result는 1이 됨 (참)
논리 연산자
- 논리 연산자는 여러 조건을 조합할 때 사용되며, &&(그리고), ||(또는),!(부정)이 있다.
- 이들은 관계 연산자와 함께 사용되어 복잡한 조건을 표현할 수 있다.
int a = 10;
int b = 5;
int result = (a > 0 && b < 10); // result는 1이 됨 (참)
- 연산의 결괏값은 변수에 저장하거나 조건문에서 사용될 수 있다.
- 이를 통해 다양한 프로그램 로직을 구현할 수 있다.
형 변환 연산자
- 형 변환 연산자는 특정 자료형을 다른 자료형으로 변환할 때 사용된다.
- 이를 명시적 형 변환이라고 하며, (자료형)으로 표기한다.
float f = 3.14;
int i = (int)f; // 실수를 정수로 변환 (소수점 이하 버림)
sizeof 연산자
- sizeof 연산자는 변수나 자료형의 크기를 바이트 단위로 반환한다.
- 메모리 관리가 중요한 C 언어에서 매우 유용하게 사용된다.
int a = 10;
printf("정수 a의 크기: %zu 바이트\n", sizeof(a)); // 출력: 4 바이트 (플랫폼에 따라 다를 수 있음)
복합대입 연산자
- 복합대입 연산자는 산술 연산자와 대입 연산자를 결합한 형태로, 변수에 값을 더하거나 빼는 등의 연산을 간편하게 수행할 수 있다.
- 예를 들어 +=, -=, *= 등이 있다.
int a = 10;
a += 5; // a는 15가 됨
콤마 연산자
- 콤마 연산자는 여러 표현식을 한 줄에 나열할 때 사용된다.
- 각 표현식은 순차적으로 평가되며, 마지막 표현식의 값이 반환된다.
int a, b;
a = 5, b = 10;
조건 연산자
- 조건 연산자(?:)는 간단한 조건문을 표현하는 데 사용되며, 삼항 연산자라고도 한다.
- 조건이 참이면 첫 번째 값이, 거짓이면 두 번째 값이 반환된다.
int a = 10;
int b = (a > 5) ? 1 : 0; // a가 5보다 크므로 b는 1이 됨
비트 연산자
- 비트 연산자는 비트 단위로 논리 연산을 수행하며, &(AND), |(OR), ^(XOR), ~(NOT), 비트 시프트(<<, >>) 등이 있다.
int a = 5; // 0101
int b = 3; // 0011
int result = a & b; // 0001 -> result는 1이 됨
- 연산자마다 우선순위가 있으며, 우선순위가 높은 연산자가 먼저 계산된다.
- 또한, 동일 우선순위의 연산자 중에서는 연산 방향이 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽으로 결정된다.
2. 선택문
if문
- if 문은 조건을 평가하여 참일 경우 특정 코드 블록을 실행한다. 기본 형식은 다음과 같다.
int a = 10;
if (a > 5) {
printf("a는 5보다 큽니다\n");
}
- if 문에 대응되는 else 문을 사용하면 조건이 거짓일 때 다른 코드를 실행할 수 있다.
int a = 3;
if (a > 5) {
printf("a는 5보다 큽니다\n");
} else {
printf("a는 5 이하입니다\n");
}
- else if 문을 사용하면 여러 조건을 차례로 평가할 수 있다.
int a = 5;
if (a > 10) {
printf("a는 10보다 큽니다\n");
} else if (a > 5) {
printf("a는 5보다 큽니다\n");
} else {
printf("a는 5 이하입니다\n");
}
if문 활용과 switch ~ case문
- if 문을 중첩하여 사용할 수 있다. 이를 통해 복잡한 조건을 표현할 수 있다.
int a = 10;
int b = 20;
if (a > 5) {
if (b > 15) {
printf("a는 5보다 크고, b는 15보다 큽니다\n");
}
}
- 중첩된 if 문에서는 else 문이 가장 가까운 if 문과 결합되므로, 이를 주의해야 한다.
- switch 문은 하나의 변수 값을 여러 값과 비교할 때 사용된다.
- 각 case에 맞는 코드 블록을 실행하며, break 문을 사용해 코드 실행을 종료한다.
int num = 2;
switch (num) {
case 1:
printf("1입니다\n");
break;
case 2:
printf("2입니다\n");
break;
default:
printf("1도 2도 아닙니다\n");
break;
}
3. 반복문
while문, for문, do ~ while문
- while 문은 조건이 참인 동안 코드 블록을 반복 실행한다.
int i = 0;
while (i < 5) {
printf("i의 값: %d\n", i);
i++;
}
- for 문은 반복 횟수가 정해져 있을 때 사용하며, 초기화, 조건, 증감을 한 줄에 표현할 수 있다.
for (int i = 0; i < 5; i++) {
printf("i의 값: %d\n", i);
}
- do ~ while 문은 일단 한 번 코드를 실행한 후 조건을 평가한다.
- 따라서 조건이 거짓이더라도 최소 한 번은 실행된다.
int i = 0;
do {
printf("i의 값: %d\n", i);
i++;
} while (i < 5);
반복문 활용
- 반복문을 중첩하여 사용할 수 있으며, 이를 통해 2차원 배열 등의 구조를 처리할 수 있다.
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("i: %d, j: %d\n", i, j);
}
}
- break 문은 반복문을 완전히 종료하며, continue 문은 현재 반복을 건너뛰고 다음 반복으로 진행한다.
for (int i = 0; i < 5; i++) {
if (i == 3) {
break; // i가 3일 때 반복문 종료
}
if (i == 1) {
continue; // i가 1일 때 해당 반복 건너뜀
}
printf("i의 값: %d\n", i);
}
'IT & AI > AI 지식' 카테고리의 다른 글
C 언어 배열, 포인터, 문자열 활용 심화 (0) | 2024.11.19 |
---|---|
C 언어 함수, 배열, 포인터 사용법과 예제 (0) | 2024.11.18 |
C 언어 기본 개념과 프로그램 구조, 변수, 상수, 데이터 입력과 출력 (1) | 2024.11.17 |
파이썬 활용 (2): 클로저, 제너레이터, 정규 표현식 (2) | 2024.11.15 |
파이썬 활용 (1): 클래스, 모듈, 패키지, 예외처리 (0) | 2024.11.14 |