연산자
정적인 데이터들을 유기적으로 행동하게 하여 새로운 가치를 창출해 내는것
예를 들어 학생들 과목당 성적 데이터는 그 자체로 의가 없다
총점 및 평균을 데이터화 해야 그 의미가 있다.
연산자들의 종류.
| 기능별 분류 | 연산자 종류 |
| 산술 연산자 | + - * / % |
| 대입 연산자 | = += -= *= /= %= |
| 부호 연산자 | + - |
| 증감 연산자 | ++ -- |
| 관계 연산자 | == != < > <= >= |
| 논리 연산자 | || && ! |
| 비트 연산자 | ! & >> << ~ |
산술 연산자
사칙 연산이 기본이다.
일상에서 많이 사용하기 때문에 이해하는데 어려움이 없다.
| + | 두 값을 더한다 | a = 5 + 3 | 8 |
| - | 왼쪽 값에서 오른쪽 값을 뺀다 | a = 5 - 3 | 2 |
| * | 두 값을 곱한다 | a = 5 * 3 | 15 |
| / | 왼쪽 값을 오른쪽 값으로 나눈다 | a = 5 / 3 | 1 (정수 나눗셈) |
| % | 나눗셈의 나머지를 구한다 | a = 5 % 3 | 2 |
#include <stdio.h>
int main(void)
{
int a = 5;
int b = 3;
printf("두 수의 합은 %d 입니다.\n", a + b);
printf("두 수의 차는 %d 입니다.\n", a - b);
printf("두 수의 곱은 %d 입니다.\n", a * b);
printf("두 수를 나누기는 %d 입니다.\n", a / b);
printf("두 수의 나머지는 %d 입니다.\n", a % b);
return 0;
}
대입 연산자
대입 연산자는 오른쪽에 있는 값을 왼쪽에 대입하는 역할을 한다.
대입 연산자와 산술연산자를 혼용해서 사용하기도 한다.
| = | 오른쪽 값을 왼쪽 변수에 대입 | a = b | a에 b 값을 저장 |
| += | 왼쪽 값에 오른쪽 값을 더한 후 다시 왼쪽에 대입 | 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 = 15
a -= 3; // a = 12
a *= 2; // a = 24
a /= 4; // a = 6
a %= 4; // a = 2
#include <stdio.h>
int main(void)
{
int a = 5;
int b = 3;
a += b;
printf("a += b의 결과는 %d 입니다.\n", a);
a -= b;
printf("a -= b의 결과는 %d 입니다.\n", a);
a *= b;
printf("a *= b의 결과는 %d 입니다.\n", a);
a /= b;
printf("a /= b의 결과는 %d 입니다.\n", a);
a %= b;
printf("a %%= b의 결과는 %d 입니다.\n", a);
return 0;
}
증감 연산자
증감 연산자는 증가 연산자와 감소 연산자의 줄임말이다.
| 논리 연산자 | 의미 | 결과 설명 |
| ++a | 전위 증가 연산자 | a의 값을 1 증가시킨 후 연산을 수행 |
| a++ | 후위 증가 연산자 | 연산을 먼저 수행한 후 a의 값을 1 증가 |
| --a | 전위 감소 연산자 | a의 값을 1 감소시킨 후 연산을 수행 |
| a-- | 후위 감소 연산자 | 연산을 먼저 수행한 후 a의 값을 1 감소 |
#include <stdio.h>
int main(void)
{
int a;
int b;
a = 5;
printf("++a 의 처리 결과 : %d\n", ++a);
a = 5;
printf("a++ 의 처리 결과 : %d\n", a++);
printf("a를 다시 출력 : %d\n", a);
b = 10;
printf("--b 의 처리 결과 : %d\n", --b);
b = 10;
printf("b-- 의 처리 결과 : %d\n", b--);
printf("b를 다시 출력 : %d\n", b);
return 0;
}
관계 연산자
관계 연산자는 두 개의 피연산자로 관계를 따지는 연산자로, 같은지 다른지 어느쪽이 큰지 작은지 비교하는 연산자이다.
| 논리 연산자 | 의미 | 예 | 결과 설명 |
| == | 두 값이 같다 | a == b | 같으면 true, 다르면 false |
| != | 두 값이 다르다 | a != b | 다르면 true |
| > | 왼쪽 값이 오른쪽 값보다 크다 | a > b | 조건이 맞으면 true |
| < | 왼쪽 값이 오른쪽 값보다 작다 | a < b | 조건이 맞으면 true |
| >= | 왼쪽 값이 오른쪽 값보다 크거나 같다 | a >= b | 조건이 맞으면 true |
| <= | 왼쪽 값이 오른쪽 값보다 작거나 같다 | a <= b | 조건이 맞으면 true |
논리 연산자
두 개의 조건식 등을 결합하여 하나의 결과값을 만들어낸다.
| 논리 | 연산자 의미 | 예시 | 결과 설명 |
| ! | 논리 부정 (NOT) | !a | a가 true이면 false, false이면 true |
| && | 논리 곱 (AND) | a && b | 두 값이 모두 true일 때만 true |
| || | 논리 합 (OR) | a || b | 둘 중 하나라도 true이면 true |
분기문
조건이란?
- 어떤 의미를 이루게 하거나 이루지 못하게 하기 위하여 갖추어야 할 상태나 요소.
if문의 기본 원리
if(수행 조건)
{
수행하고 싶은 일
}
수행 조건에 관계 연산자 사용
#include <stdio.h>
int main(void)
{
int a;
printf("정수를 입력하세요 : ");
scanf_s("%d", &a);
if(a > 5)
{
printf("입력 값은 5보다 큽니다.\n");
}
return 0;
}
순서도

의미 없는 조건 비교를 하지 않기 위해 if 문만을 사용하지 않는다.
if ~ else 문
else 문은 '그 밖의' 라는 의미를 가지고 있다.
else 문을 추가함으로써 이것만 선택할 수 있는 것이 아니라 저것도 선택이 가능하다.
양자 택일의 형태이다.
if(수행 조건) {
수행조건 만족 시 실행
} else {
수행조건 불만족 시 실행
};
if ~ else if ~ else 문
인생은 양자택일만 있는 것이 아니다.
else if문을 사용하는 방법
if(수행 조건1){
수행 조건1 만족 시 수행
} else if (수행 조건2){
수행 조건2 만족 시 수행
} else {
수행조건1, 수행조건2 불만족시 수행
};
반복문
while문의 기본 원리
while(반복 조건){
반복 문장
}
반복 조건을 만족하는 동안 반복 문장을 수행한다.
반복 조건을 만족하지 않으면 while문을 빠져 나간다.
이중 while 문
구구단 2단부터 9단까지 출력하시오.
이중 반복문을 사용해야 한다.
반복 빈도가 높은 부분 : 단수와 곱해지는 수
반복 빈도가 낮은 부분 : 단수
지구의 공전과 자전의 원리와 비슷하다.
공전은 태양 한바퀴를 도는것이기에 오래걸림 (1년)
자전은 지구 혼자 한바퀴 도는것으로 빠름(하루)
#include <stdio.h>
int main()
{
int dan = 2;
while (dan < 10){
int i = 1;
while ( i < 10){
printf("%d X %d = %d\n", dan, i, dan*i);
i++;
}
dan++;
}
return 0;
}
무한 루프
무한 루프란 반복 수행이 무한이 일어난다는 것
#include <stdio.h>
void main()
{
int i = 0;
while(1)
{
printf("Programming\n");
i++;
}
return;
}
반복 조건이 어느 시점에 무너질 수 있도록 설계
무한 루프 안에서 어느 시점에 break나 return으로 빠져 나올 수 있어야 함
반복문
for문의 기본 원리
for 문은 while문과 다르게 변수의 초기화 연산과 증감 연산이 추가된다.
for(초기문; 조건문; 증감문;){
반복하고자 하는 내용
}
for문과 while 문의 비교
while문에는 괄호안에 조건문만 있다고 해서 간단하지 않다 초기문과 증감문이 위 아래로 포진되어 있기에
for문이 오히려 정돈되어 있는 구조로 볼 수 있다.
#include <stdio.h>
void main()
{
int dan, i;
printf("단을 입력하시오 : ");
scanf("%d", &dan);
for(i = 1; i < 10; i++)
{
printf("%d * %d = %d\n", dan, i, dan * i);
}
return;
}
멈추거나 계속하거나 ex: 화
continue : 고
break : 스톱
break
반복문 while 문 내부에서 특정 조건이 되면 break를 만나게 되는데, break문은 while문을 빠져 나가게 된다.
#include <stdio.h>
int main()
{
int a = 0;
while(1)
{
if(a > 100)
{
break;
}
printf("a의 값은 %d 입니다.\n", a);
a++;
}
printf("a는 100보다 크다\n");
return 0;
}
continue 문의 기본 원리
반복문 while문 내부에서 특정 조건이 되면 continue문을 만나게 되는데, 이 떄 continue문 이하의 수행은 무시하고, 다시 반복의 시작점으로 간다.
#include <stdio.h>
int main()
{
int a = 0;
while(a < 100)
{
a++;
if(a > 80 && a < 90)
{
continue;
}
}
return 0;
}
컨티뉴를 사용해서 짝수단만 출력되는 구구단을 작성해보기
함수
함수의 정의 y = f(x)
함수의 종류
표준 함수 - 언어에서 기본적으로 제공해주는 함수를 표준함수라고 한다.
함수를 라이브러리화 시켜서 편리하게 사용할 수 있게 한다.
사용자 정의 함수 - 사용자가 자신이 원하는 기능을 직접 만들 수 있다.
표준함수의 기능에는 한계가 있다.
정형화된 완구(표준 함수)와 가변적인 레고같은 완구(사용자 정의 함수)의 차이
함수의 기본 형태
데이터타입 - 함수가 리턴하는 값의 타입
함수 이름 - 함수 기능과 밀접한 이름으로 만드는 것이 좋음
인수 목록 - 함수에 필요한 값을 전달할 때 사용
함수의 내용 - 중괄호{} 사이의 영역 안에서 작성
자료형 함수이름(인수목록) {
함수의 내용
}
함수의 기본 형태
더하기 Add 기능 함수 작성
int Add(int a, int b){
return a + b;
}
함수의 호출과 프로그램 흐름
함수 호출 및 반환되는 흐름을 순서대로 표현

void 타입
(타입이 없다)
결과값을 리턴하지 않는 함수
#include <stdio.h>
int Add(int i, int j);
void print_Start()
{
printf("======= Programming Start =======\n");
printf("두 개의 정수를 입력하시오 : ");
}
void print_Hap(int result)
{
printf("두 수의 합은 %d 입니다.\n", result);
printf("======= Programming End =======\n");
}

포인터란?
❐ 개념
일상 생활에서 포인터란 내 손을 대신해서 어딘가를 가리킬 때 사용하는 도구를 가리킨다. 마우스 포인터나 레이저 포인터는 화면이나 칠판의 특정 부분을 가리키는데 사용된다. C 언어의 포인터도 비슷한 개념인데, 다만 프로그램이 수행되면서 다른 곳을 참조할 필요가 있는 곳은 데이터나 명령어가 저장되어 있는 메모리가 그 대상이 된다.
즉, 포인터(pointer)란 어떤 다른 값이 저장되어 있는 메모리 주소를 갖고 있는 상수나 변수를 가리킨다. 좀 더 쉽게 말해 포인터란 어딘가를 가리킬 수 있는 능력을 갖고 있는 데이터이다. 이런 포인터는 컴파일 환경에 따라 4 바이트 혹은 8 바이트의 길이를 갖는 일종의 자료형으로 생각할 수 있다.
'pgms' 카테고리의 다른 글
| [10주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 44 (0) | 2026.03.17 |
|---|---|
| [10주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 43 (0) | 2026.03.16 |
| [9주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 41 (0) | 2026.03.12 |
| [9주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 40 (0) | 2026.03.11 |
| [9주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 39 (0) | 2026.03.10 |