연산자
연산자는 정적인 데이터들을 유기적으로 행동하게 하여 새로운 가치를 창출해 낸다.
산술 연산자
사칙 연산을 다루는 연산자이다.
종류 | 설명 |
+ | 왼쪽과 오른 쪽에 있는 값을 더한다. |
- | 왼쪽 값에서 오른쪽 값을 뺀다. |
* | 왼쪽 값과 오른쪽 값을 곱한다. |
/ | 왼쪽 값을 오른쪽 값으로 나눈다. |
% | 왼쪽 값을 오른쪽 값으로 나눈 나머지를 구한다. |
대입 연산자
오른쪽에 있는 값을 왼쪽에 대입하는 역할을 하며, 산술 연산자와 혼용해서 사용하기도 한다.
종류 | 설명 |
= | 오른쪽 값을 왼쪽에 대입한다. |
+= | 왼쪽 값을 오른쪽 값과 더해서 다시 왼쪽 값에 대입한다. |
-= | 왼쪽 값에서 오른쪽 값을 빼고 다시 왼쪽 값에 대입한다. |
*= | 왼쪽 값에 오른쪽 값을 곱하고 다시 왼쪽 값에 대입한다. |
/= | 왼쪽 값을 오른쪽 값으로 나누고 다시 왼쪽 값에 대입한다. |
%= | 왼쪽 값을 오른쪽 값으로 나눈 나머지를 다시 왼쪽 값에 대입한다. |
증감 연산자
종류 | 설명 |
++a | a 값을 1 증가시킨 후 연산을 진행한다. |
a++ | 연산 진행 후 a 값을 1 증가시킨다. |
--a | a 값을 1 감소시킨 후 연산을 진행한다. |
a-- | 연산 진행 후 a 값을 1 감소시킨다. |
관계 연산자
두 개의 피연산자로 관계를 따지는 연산자이다. 참 또는 거짓을 반환한다.
종류 | 설명 |
== | 두 값의 값이 같다. |
!= | 두 값의 값이 다르다. |
> | 왼쪽 값이 오른쪽 값보다 크다. |
< | 오른쪽 값이 왼쪽 값보다 크다. |
>= | 왼쪽 값이 오른쪽 값 이상이다. |
<= | 오른쪽 값이 왼쪽 값 이상이다. |
논리 연산자
종류 | 설명 |
! | 피연산자의 결과를 반대로 만든다. true는 false로, false는 true로 만든다. |
&& | 피연산자가 모두 참이면 true를 반환한다. |
|| | 피연산자 중 하나라도 참이면 true를 반환한다. |
예제
사용자에게 3개의 정수를 입력받고, 3개의 수를 곱한 결과 출력 프로그램
#include <stdio.h>
int main(void) {
int input1, input2, input3;
printf("세 개의 정수를 입력하세요: ");
scanf("%d %d %d", &input1, &input2, &input3);
printf("세 수의 곱은 %d입니다.", input1 * input2 * input3);
return 0;
}
사용자에게 3개의 정수를 입력받고, 세 정수의 합과 평균을 출력 프로그램
#include <stdio.h>
int main(void) {
int input1, input2, input3, sum = 0;
double avg;
printf("세 개의 정수를 입력하세요: ");
scanf("%d %d %d", &input1, &input2, &input3);
sum = input1 + input2 + input3;
avg = sum / 3;
printf("세 수의 합은 %d, 평균은 %.2lf입니다.", sum, avg);
return 0;
}
분기문
- 수행 조건1을 만족하면 if문 내부로 진입하여 작업을 수행하고, 분기문을 벗어난다.
- 수행 조건1을 만족하지 않고, 수행 조건2를 만족하면 else if문 내부로 진입하여 작업을 수행하고, 분기문을 벗어난다.
- 수행 조건1과 수행 조건2를 모두 만족하지 않으면 else문 내부로 진입하여 작업을 수행하고, 분기문을 벗어난다.
if(수행 조건1) {
수행 조건1 만족 시 수행
} else if(수행 조건2) {
수행 조건2 만족 시 수행
} else {
수행 조건1, 수행 조건2 모두 불만족 시 수행
}
사용자에게 입력받은 수가 5보다 큰지, 작은지, 같은지에 대해 판별하는 순서도와 프로그램을 작성해 보자
#include <stdio.h>
int main(void) {
int input;
printf("정수를 입력하세요: ");
scanf("%d", &input);
if (input > 5)
printf("입력 값은 5보다 큽니다.");
else if (input < 5)
printf("입력 값은 5보다 작습니다.");
else
printf("입력 값은 5와 같습니다.");
return 0;
}
반복문
while문
반복 조건을 만족하는 동안 반복 문장을 수행하고, 반복 조건을 만족하지 않으면 while문을 빠져나간다.
while (반복 조건) {
반복 문장
}
이중 while문을 사용하여 한 줄에 별이 하나씩 늘어나며 총 다섯 줄을 출력하는 프로그램을 만들어보자.
#include <stdio.h>
int main(void) {
int line = 1;
while (line <= 5) {
int count = 0;
while (count < line) {
printf("*");
count++;
}
printf("\n");
line++;
}
return 0;
}
무한 루프
무한 루프는 반복 수행이 무한으로 일어나는 것을 말하며, 무한 루프를 돌지 않도록 어느 시점에 break 또는 return으로 반복문을 빠져나올 수 있어야 한다.
아래 코드는 i가 100이 되면 반복문을 빠져나오도록 작성한 코드이다.
#include <stdio.h>
int main(void) {
int i = 0;
while (true) {
if (i == 100)
break;
i++;
}
printf("i: %d", i);
return 0;
}
for문
while문과 달리 변수의 초기화 연산과 증감 연산을 작성할 수 있다. 초기문, 조건문, 증감문 모두 작성이 필수는 아니다. 해당 구문을 사용하지 않아도 될 경우 비워둬도 된다.
for(초기문; 조건문; 증감문) {
반복하고자 하는 내용
}
구구단의 단 수를 사용자에게 입력받아 구구단을 출력해 주는 프로그램을 만들어보자.
i를 1부터 시작하며, 루프를 한 번 돌 때마다 i를 1씩 증가시킨다. i가 10이 되면 반복문을 종료한다.
#include <stdio.h>
int main(void) {
int time;
printf("단 수를 입력하세요: ");
scanf("%d", &time);
for (int i = 1; i < 10; i++) {
printf("%d * %d = %d\n", time, i, time * i);
}
return 0;
}
배운 점
- 연산자의 종류와 해당 연산자가 어떤 역할을 하는지에 대해 학습했다.
- 순서도 작성의 중요성과 분기문(if-else if-else) 사용법에 대해 알게 되었다.
- while문 사용 시 무한 루프가 발생하지 않도록 주의해야 하며, for문 사용 시에도 조건문과 증감문을 작성하지 않는다면 무한 루프가 발생하지 않도록 유의해야 한다.
'데브코스' 카테고리의 다른 글
[10주차 - DAY4] 사용자 정의 자료형, 동적 할당, 객체 지향 (0) | 2024.05.02 |
---|---|
[10주차 - DAY2] 포인터 (1) | 2024.04.30 |
[10주차 주간 발표] 동적 라우팅과 다익스트라 알고리즘 (0) | 2024.04.27 |
[9주차 - DAY5] 프로그래밍과 C언어 (0) | 2024.04.26 |
[9주차 - DAY3] 코드 퀄리티 & 랜덤 데이터 API (0) | 2024.04.24 |