icon

안동민 개발노트

2장 : C프로그래밍

C 연산자, 조건문, 반복문

C프로그래밍 학습 절입니다.

2장 1절에서는 C 프로그램의 기본 구조를 배웠습니다.

#include <stdio.h>

int main(void) {
    printf("Hello");
    return 0;
}

그리고 변수, 자료형, printf, scanf를 배웠습니다.

2장 2절에서는 이제 변수에 저장된 값을 가지고 계산하고, 비교하고, 판단하고, 반복하는 방법을 배웁니다.

이번 절 범위는 C프로그래밍 출제범위 중 연산자, 연산자 우선순위, 분기 제어문, 반복 제어문, break문, continue문에 해당합니다.


이번 절의 큰 그림

이번 절에서 배울 내용은 크게 세 덩어리입니다.

구분핵심
연산자값을 계산하거나 비교하는 기호
조건문조건에 따라 실행할 코드를 선택
반복문같은 코드를 여러 번 실행

예를 들어 이런 프로그램을 생각해 보겠습니다.

if (score >= 60) {
    printf("합격");
} else {
    printf("불합격");
}

여기서는 다음과 같습니다.

부분의미
score >= 60비교 연산
if조건문
printf조건에 따라 실행되는 문장

또 이런 코드도 있습니다.

for (i = 1; i <= 10; i++) {
    sum += i;
}

여기서는 다음과 같습니다.

부분의미
i = 1초기값
i <= 10반복 조건
i++증감
sum += i반복 실행 내용

이번 절에서는 이런 코드를 읽을 수 있게 만드는 것이 목표입니다.


연산자 기본

연산자란?

연산자는 계산이나 판단을 하는 기호입니다.

예를 들어
a + b

여기서 +가 연산자입니다.

score >= 60

여기서 >=도 연산자입니다.

C언어의 연산자는 종류가 많습니다.

종류
산술 연산자+, -, *, /, %
관계 연산자>, <, >=, <=, ==, !=
논리 연산자&&, ||, !
대입 연산자=, +=, -=, *=, /=
증감 연산자++, --
조건 연산자조건 ? 값1 : 값2
비트 연산자&, |, ^, ~, <<, >>

C프로그래밍 범위에도 산술, 관계, 논리, 대입, 조건, 비트 연산자와 연산자 우선순위가 포함되어 있습니다.


산술·관계·논리 연산

산술 연산자

산술 연산자는 사칙연산을 하는 연산자입니다.

연산자의미결과
+더하기5 + 27
-빼기5 - 23
*곱하기5 * 210
/나누기5 / 22
%나머지5 % 21

주의해야 할 것은 /%입니다.


정수 나눗셈

C에서 정수끼리 나누면 결과도 정수입니다.

int a = 5;
int b = 2;

printf("%d", a / b);
출력
2

2.5가 아니라 2일까?

ab가 둘 다 int라서 정수 나눗셈이 되기 때문입니다.

5 / 2 = 2.5
이지만 정수 부분만 남아서
2

가 됩니다.

소수 결과를 원하면 둘 중 하나를 실수로 만들어야 합니다.

printf("%f", 5.0 / 2);
출력
2.500000

나머지 연산자 %

%는 나눗셈의 나머지를 구합니다.

5 % 2

5를 2로 나누면 몫은 2, 나머지는 1입니다.

5 = 2 × 2 + 1
그래서
5 % 2 = 1

나머지 연산자는 짝수, 홀수 판별에 자주 씁니다.

if (num % 2 == 0) {
    printf("짝수");
} else {
    printf("홀수");
}
여기서
num % 2 == 0

이면 2로 나누어떨어진다는 뜻입니다.

즉, 짝수입니다.


관계 연산자

관계 연산자는 두 값을 비교합니다.

결과는 참 또는 거짓입니다.

C에서는
참 = 1
거짓 = 0

으로 다룹니다.

연산자의미
>a > b
<작음a < b
>=크거나 같다a >= b
<=작거나 같다a <= b
==같음a == b
!=같지 않음a != b
예를 들어
printf("%d", 5 > 3);
출력
1

왜냐하면 5 > 3은 참이기 때문입니다.

printf("%d", 5 < 3);
출력
0

왜냐하면 5 < 3은 거짓이기 때문입니다.


===는 다릅니다

이것은 진짜 중요합니다.

기호의미
=대입
==비교
a = 10;
a에 10을 넣어라.
a == 10
a가 10과 같은가?

조건문에서 실수로 == 대신 =를 쓰면 큰 문제가 됩니다.

틀린 예
if (a = 10) {
    printf("same");
}

이 코드는 a가 10인가?를 비교하는 것이 아니라, a에 10을 넣는 것입니다.

대부분의 경우 조건이 참처럼 처리되어 의도와 다르게 동작합니다.

맞는 예
if (a == 10) {
    printf("same");
}

논리 연산자

논리 연산자는 여러 조건을 연결합니다.

1장 3절에서 배운 AND, OR, NOT이 C언어에도 그대로 나옵니다.

C 연산자의미논리
&&그리고AND
``
!아님NOT

AND &&

둘 다 참이어야 참입니다.

if (age >= 13 && age <= 19) {
    printf("청소년");
}
나이가 13 이상이고 19 이하이면 청소년

둘 중 하나라도 거짓이면 전체가 거짓입니다.


OR ||

하나라도 참이면 참입니다.

if (grade == 'A' || grade == 'B') {
    printf("우수");
}
grade가 A이거나 B이면 우수

NOT !

참과 거짓을 뒤집습니다.

if (!(score >= 60)) {
    printf("불합격");
}
score가 60 이상이 아니라면 불합격

다음과 같은 뜻입니다.

if (score < 60) {
    printf("불합격");
}

논리 연산 진리표

| A | B | A && B | A || B | |---:|---:|---:|---:| | 0 | 0 | 0 | 0 | | 0 | 1 | 0 | 1 | | 1 | 0 | 0 | 1 | | 1 | 1 | 1 | 1 |

NOT은 이렇게 됩니다.

A!A
01
10
핵심
&&는 둘 다 참
||는 하나라도 참
!는 반대

대입과 증감

대입 연산자

대입 연산자는 변수에 값을 넣습니다.

가장 기본은 =입니다.

a = 10;

복합 대입 연산자도 있습니다.

연산자의미같은 표현
+=더해서 대입a += 3a = a + 3
-=빼서 대입a -= 3a = a - 3
*=곱해서 대입a *= 3a = a * 3
/=나누어서 대입a /= 3a = a / 3
%=나머지를 대입a %= 3a = a % 3
int sum = 0;

sum += 5;
sum += 3;

printf("%d", sum);
계산
sum = 0
sum = sum + 5 → 5
sum = sum + 3 → 8
출력
8

증감 연산자 ++, --

증감 연산자는 값을 1 증가시키거나 1 감소시킵니다.

연산자의미
++1 증가
--1 감소
int a = 5;
a++;
printf("%d", a);
출력
6

a++는 다음과 같습니다.

a = a + 1;

a--는 다음과 같습니다.

a = a - 1;

전위형과 후위형

++는 앞에 붙을 수도 있고 뒤에 붙을 수도 있습니다.

++a;
a++;

단독으로 쓸 때는 둘 다 결과적으로 a가 1 증가합니다.

하지만 다른 연산과 같이 쓰면 차이가 생깁니다.

후위 증가 a++

int a = 5;
int b;

b = a++;
먼저 b에 a 값을 넣고,
그다음 a를 1 증가시킵니다.
결과
b = 5
a = 6

전위 증가 ++a

int a = 5;
int b;

b = ++a;
먼저 a를 1 증가시키고,
그 증가된 값을 b에 넣습니다.
결과
a = 6
b = 6

비교는 다음과 같습니다.

코드a 최종값b 값
b = a++;65
b = ++a;66

시험에 자주 나옵니다.


조건 연산자

조건 연산자는 if-else를 짧게 쓴 형태입니다.

형식
조건 ? 참일 때 값 : 거짓일 때 값
int max;
max = (a > b) ? a : b;
a가 b보다 크면 max에 a를 넣고,
아니면 max에 b를 넣습니다.
int a = 10;
int b = 20;
int max;

max = (a > b) ? a : b;

printf("%d", max);
출력
20

왜냐하면 a > b는 거짓이므로 b가 선택됩니다.


비트 연산자

비트 연산자는 값을 2진수 비트 단위로 계산합니다.

이번 절에서는 깊게 들어가지 않고 기본만 잡습니다.

연산자의미
&비트 AND
``
^비트 XOR
~비트 NOT
<<왼쪽 시프트
>>오른쪽 시프트
5 & 3
5와 3을 2진수로 보면
5 = 0101
3 = 0011
비트 AND
  0101
& 0011
------
  0001

결과는 1입니다.

5 & 3 = 1
주의
&&는 논리 AND
&는 비트 AND

다릅니다.

연산자의미
&&참/거짓 조건 연결
&비트 단위 AND

연산자 우선순위

C에서는 연산자마다 먼저 계산되는 순서가 있습니다.

예를 들어
1 + 2 * 3

곱셈이 덧셈보다 먼저입니다.

1 + 6 = 7

그래서 결과는 9가 아니라 7입니다.

대표 우선순위는 이렇게 기억하면 충분합니다.

우선순위연산자
1괄호 ()
2증감 ++, --, NOT !
3곱셈, 나눗셈, 나머지 *, /, %
4덧셈, 뺄셈 +, -
5관계 >, <, >=, <=
6같음 비교 ==, !=
7논리 AND &&
8논리 OR `
9대입 =, +=, -=, ...

가장 안전한 방법은 괄호를 쓰는 것입니다.

result = (a + b) * c;

괄호가 있으면 헷갈리지 않습니다.


조건문

조건문이란?

조건문은 조건에 따라 실행할 문장을 고르는 문법입니다.

대표 조건문은 다음과 같습니다.

if
if-else
else if
switch

C프로그래밍 범위의 분기 제어문에는 if, switch, goto가 포함되어 있습니다.


if

형식
if (조건) {
    조건이 참일 때 실행할 문장;
}
int score = 80;

if (score >= 60) {
    printf("합격");
}

score >= 60이 참이므로 출력은:

합격

만약 score가 50이면 조건이 거짓이므로 아무것도 출력하지 않습니다.


if-else

조건이 참일 때와 거짓일 때를 나누고 싶으면 else를 씁니다.

형식
if (조건) {
    참일 때 실행;
} else {
    거짓일 때 실행;
}
int score = 50;

if (score >= 60) {
    printf("합격");
} else {
    printf("불합격");
}
출력
불합격

else if

조건이 여러 개일 때는 else if를 씁니다.

int score = 85;

if (score >= 90) {
    printf("A");
} else if (score >= 80) {
    printf("B");
} else if (score >= 70) {
    printf("C");
} else {
    printf("F");
}
실행 흐름
score >= 90 ? 거짓
score >= 80 ? 참
B 출력
나머지는 검사하지 않음
출력
B
중요한 점
else if는 위에서부터 차례대로 검사하고,
처음 참인 것 하나만 실행합니다.

조건식에서 0과 0이 아닌 값

C언어에서는 조건식에서 0은 거짓, 0이 아닌 값은 참입니다.

if (0) {
    printf("A");
} else {
    printf("B");
}
출력
B

왜냐하면 0은 거짓이기 때문입니다.

if (3) {
    printf("A");
} else {
    printf("B");
}
출력
A

왜냐하면 3은 0이 아닌 값이라 참으로 처리되기 때문입니다.

핵심
0 = 거짓
0이 아닌 값 = 참

중첩 if문

if문 안에 if문을 넣을 수 있습니다.

if (score >= 60) {
    if (score >= 90) {
        printf("우수 합격");
    } else {
        printf("보통 합격");
    }
} else {
    printf("불합격");
}
예를 들어 score가 95이면
score >= 60 참
score >= 90 참
우수 합격 출력
score가 75이면
score >= 60 참
score >= 90 거짓
보통 합격 출력
score가 50이면
score >= 60 거짓
불합격 출력

switch

switch문은 하나의 값에 따라 여러 경우 중 하나를 선택할 때 씁니다.

형식
switch (값) {
case 값1:
    문장;
    break;
case 값2:
    문장;
    break;
default:
    문장;
}
int menu = 2;

switch (menu) {
case 1:
    printf("김밥");
    break;
case 2:
    printf("라면");
    break;
case 3:
    printf("떡볶이");
    break;
default:
    printf("잘못된 선택");
}
출력
라면

왜냐하면 menu가 2라서 case 2가 실행됩니다.


break가 중요한 이유

switch문에서 break를 빼먹으면 다음 case까지 계속 실행될 수 있습니다.

int menu = 2;

switch (menu) {
case 1:
    printf("김밥");
case 2:
    printf("라면");
case 3:
    printf("떡볶이");
default:
    printf("잘못된 선택");
}
출력
라면떡볶이잘못된 선택

왜냐하면 case 2에서 시작한 뒤 break가 없어서 아래로 계속 내려가기 때문입니다.

그래서 보통 각 case 끝에는 break를 씁니다.

case 2:
    printf("라면");
    break;

ifswitch 비교

구분if문switch문
조건 형태범위 비교 가능특정 값 비교에 적합
score >= 60menu == 1
복잡한 조건좋음불편함
case 사용없음있음
break 필요보통 필요 없음보통 필요

예를 들어 점수 등급은 if가 자연스럽습니다.

if (score >= 90) ...
else if (score >= 80) ...

메뉴 선택은 switch가 자연스럽습니다.

switch (menu) {
case 1:
case 2:
case 3:
}

반복문

반복문이란?

반복문은 같은 코드를 여러 번 실행할 때 씁니다.

대표 반복문은 세 가지입니다.

for
while
do~while

C프로그래밍 범위의 반복 제어문에도 for, while, do~while이 포함됩니다.


for

for문은 반복 횟수가 비교적 분명할 때 많이 씁니다.

형식
for (초기식; 조건식; 증감식) {
    반복할 문장;
}
int i;

for (i = 1; i <= 5; i++) {
    printf("%d ", i);
}
실행 흐름
i = 1
i <= 5 참 → 1 출력 → i++
i = 2
i <= 5 참 → 2 출력 → i++
i = 3
i <= 5 참 → 3 출력 → i++
i = 4
i <= 5 참 → 4 출력 → i++
i = 5
i <= 5 참 → 5 출력 → i++
i = 6
i <= 5 거짓 → 반복 종료
출력
1 2 3 4 5

for문 구조 자세히 보기

for (i = 1; i <= 5; i++)
부분의미
i = 1처음에 한 번 실행
i <= 5반복할지 검사
i++반복 한 번 끝날 때마다 실행

반복 순서는 다음과 같습니다.

초기식
→ 조건식 검사
→ 반복문 몸체 실행
→ 증감식
→ 조건식 검사
→ 반복문 몸체 실행
→ 증감식
→ ...

조건식이 거짓이 되면 반복이 끝납니다.


1부터 10까지 합 구하기

int i;
int sum = 0;

for (i = 1; i <= 10; i++) {
    sum += i;
}

printf("%d", sum);
계산
sum = 0
sum = 0 + 1 = 1
sum = 1 + 2 = 3
sum = 3 + 3 = 6
...
sum = 45 + 10 = 55
출력
55

이 문제는 반복문을 이해하는 기본 중의 기본입니다.


while

while문은 조건이 참인 동안 반복합니다.

형식
while (조건) {
    반복할 문장;
}
int i = 1;

while (i <= 5) {
    printf("%d ", i);
    i++;
}
출력
1 2 3 4 5

for문과 같은 결과입니다.


for문과 while문 비교

구분for문while문
주로 쓰는 경우반복 횟수가 분명할 때조건 중심 반복
구조초기식, 조건식, 증감식이 한 줄에 있음조건식만 앞에 있음
1부터 10까지 반복입력이 0이 아닐 동안 반복

예를 들어 1부터 10까지 더하는 것은 for가 자연스럽습니다.

for (i = 1; i <= 10; i++)

반면 사용자가 0을 입력할 때까지 반복하는 것은 while이 자연스럽습니다.

while (num != 0)

do~while

do~while문은 일단 한 번 실행한 다음 조건을 검사합니다.

형식
do {
    반복할 문장;
} while (조건);
int i = 1;

do {
    printf("%d ", i);
    i++;
} while (i <= 5);
출력
1 2 3 4 5

while과 비슷하지만 결정적인 차이가 있습니다.

do~while은 조건이 처음부터 거짓이어도 최소 한 번은 실행됩니다.
int i = 10;

do {
    printf("%d", i);
} while (i < 5);
출력
10

왜냐하면 먼저 실행하고 나중에 조건을 검사하기 때문입니다.


반복문 3개 비교

구분forwhiledo~while
조건 검사 시점실행 전실행 전실행 후
최소 실행 횟수0번 가능0번 가능최소 1번
주 사용 상황반복 횟수 명확조건 중심메뉴 입력처럼 최소 한 번 필요
짧게 외우면
for = 횟수 반복
while = 조건 반복
do~while = 일단 한 번

흐름 제어와 코드 추적

break

break는 반복문이나 switch문을 즉시 빠져나갑니다.

int i;

for (i = 1; i <= 10; i++) {
    if (i == 5) {
        break;
    }
    printf("%d ", i);
}
실행
i = 1 출력
i = 2 출력
i = 3 출력
i = 4 출력
i = 5 → break → 반복 종료
출력
1 2 3 4
핵심
break = 반복문 탈출

continue

continue는 이번 반복만 건너뛰고 다음 반복으로 넘어갑니다.

int i;

for (i = 1; i <= 5; i++) {
    if (i == 3) {
        continue;
    }
    printf("%d ", i);
}
실행
i = 1 출력
i = 2 출력
i = 3 → continue → 출력 건너뜀
i = 4 출력
i = 5 출력
출력
1 2 4 5
핵심
continue = 이번 한 번만 건너뛰기
break = 아예 반복 종료

breakcontinue 비교

구분의미결과
break반복문 전체 종료반복문 밖으로 나감
continue현재 반복만 건너뜀다음 반복으로 넘어감

예를 들어 1부터 10까지 숫자를 보다가 5에서 멈추려면 break.

if (i == 5) break;

1부터 10까지 출력하되 5만 빼고 싶으면 continue.

if (i == 5) continue;

중첩 반복문

반복문 안에 반복문을 넣을 수 있습니다.

대표 예는 구구단입니다.

int i, j;

for (i = 2; i <= 9; i++) {
    for (j = 1; j <= 9; j++) {
        printf("%d x %d = %d\n", i, j, i * j);
    }
}
실행 흐름
i = 2일 때 j가 1부터 9까지 반복됩니다.
i = 3일 때 j가 1부터 9까지 반복됩니다.
...
i = 9일 때 j가 1부터 9까지 반복됩니다.

총 몇 번 실행될까요?

8단 × 9번 = 72번

중첩 반복문은 자료구조에서 2차원 배열, 행렬, 정렬을 배울 때 자주 나옵니다.


코드 추적 예제 1

다음 코드의 출력은?

int i;

for (i = 1; i <= 5; i++) {
    printf("%d", i);
}

i의 변화는 다음과 같습니다.

반복i조건 i <= 5출력
111
222
333
444
555
종료6거짓없음
출력
12345

코드 추적 예제 2

다음 코드의 출력은?

int i;
int sum = 0;

for (i = 1; i <= 5; i++) {
    sum += i;
}

printf("%d", sum);

계산은 다음과 같습니다.

isum 변화
10 + 1 = 1
21 + 2 = 3
33 + 3 = 6
46 + 4 = 10
510 + 5 = 15
출력
15

코드 추적 예제 3

다음 코드의 출력은?

int i;

for (i = 1; i <= 5; i++) {
    if (i % 2 == 0) {
        printf("%d", i);
    }
}

i를 하나씩 살펴보겠습니다.

ii % 2 == 0출력
1거짓없음
22
3거짓없음
44
5거짓없음
출력
24

짝수만 출력하는 코드입니다.


출제 예시형 코드

C프로그래밍 예시문제에 이런 코드가 나옵니다. 아직 배열은 2장 4절에서 자세히 배우지만, 반복문과 조건문 관점에서 먼저 살펴보겠습니다.

#include <stdio.h>

int moon[] = {1,2,3,4,5,6,7,8,9,10};

void main(void)
{
    int a, sum = 0;

    for (a = 0; a < 8; ++a)
        if (moon[a] % 2 == 0)
            sum += moon[a];

    printf("%d", sum);
}

이 문제의 핵심은 세 가지입니다.

a는 0부터 7까지 반복됩니다.
moon[a] 중 짝수만 더합니다.
moon[0]부터 moon[7]까지만 봅니다.

배열 값은 다음과 같습니다.

amoon[a]
01
12
23
34
45
56
67
78
여기서 짝수는
2, 4, 6, 8
더하면
2 + 4 + 6 + 8 = 20
따라서 출력은
20

이 예시문제의 정답도 20입니다.


무한 반복

반복문 조건이 계속 참이면 무한 반복이 됩니다.

int i = 1;

while (i <= 5) {
    printf("%d", i);
}

이 코드는 위험합니다.

왜냐하면 i가 증가하지 않기 때문입니다.

i는 계속 1
i <= 5는 계속 참
무한 반복
올바른 코드
int i = 1;

while (i <= 5) {
    printf("%d", i);
    i++;
}

반복문에서는 조건을 언젠가 거짓으로 만드는 변화가 있어야 합니다.


goto

C에는 goto문도 있습니다.

형식
goto label;

label:
    문장;
#include <stdio.h>

int main(void) {
    goto end;

    printf("A");

end:
    printf("B");

    return 0;
}
출력
B

왜냐하면 goto end; 때문에 printf("A");를 건너뛰고 end: 위치로 이동하기 때문입니다.

하지만 goto는 프로그램 흐름을 복잡하게 만들기 때문에 일반적으로 자주 쓰지 않습니다.

시험 범위에는 들어 있지만, 실전에서는 다음 정도만 기억해 둡니다.

goto = 지정한 라벨 위치로 강제 이동

C 제어 흐름 전체 정리

C 프로그램은 기본적으로 위에서 아래로 실행됩니다.

하지만 제어문을 만나면 흐름이 바뀝니다.

제어문역할
if조건이 참이면 실행
if-else참/거짓에 따라 선택
switch값에 따라 case 선택
for횟수 중심 반복
while조건 중심 반복
do~while최소 한 번 실행 후 반복
break반복문 또는 switch 탈출
continue현재 반복 건너뛰기
goto라벨로 강제 이동

자주 혼동되는 출제 포인트

혼동 포인트 1. 정수 나눗셈

printf("%d", 5 / 2);
출력
2

2.5가 아닙니다.


혼동 포인트 2. 나머지 연산자

5 % 2
결과
1

짝수 판별에 자주 쓰입니다.

num % 2 == 0

혼동 포인트 3. ===

a = 10;   // 대입
a == 10;  // 비교

조건문에서는 보통 ==를 써야 합니다.


혼동 포인트 4. &&&

&& = 논리 AND
& = 비트 AND

둘은 다릅니다.


혼동 포인트 5. 후위 증가와 전위 증가

b = a++;

먼저 b에 a를 넣고, 나중에 a 증가.

b = ++a;

먼저 a 증가, 그다음 b에 넣음.


혼동 포인트 6. switch의 break

break가 없으면 다음 case까지 이어서 실행될 수 있습니다.


혼동 포인트 7. do~while은 최소 한 번 실행

do {
    실행;
} while (조건);

조건이 거짓이어도 일단 한 번은 실행됩니다.


혼동 포인트 8. for문의 범위

for (i = 0; i < 8; i++)
이것은 i가
0, 1, 2, 3, 4, 5, 6, 7

총 8번 반복됩니다.

i = 8은 실행하지 않습니다.


이번 절의 핵심 정리

산술 연산자

+  -  *  /  %

관계 연산자

>  <  >=  <=  ==  !=

논리 연산자

&&  ||  !

조건문

if (조건) {
    문장;
} else {
    문장;
}

switch문

switch (값) {
case 값1:
    문장;
    break;
default:
    문장;
}

for문

for (초기식; 조건식; 증감식) {
    반복할 문장;
}

while문

while (조건) {
    반복할 문장;
}

do~while문

do {
    반복할 문장;
} while (조건);

break와 continue

break = 반복 종료
continue = 이번 반복만 건너뜀

핵심 한 문장

이번 절의 핵심을 한 문장으로 정리하면 다음과 같습니다.

연산자는 값을 계산하고 비교하며, 조건문은 실행할 길을 선택하고, 반복문은 같은 일을 여러 번 실행하게 해줍니다.
더 짧게
연산자 = 계산
조건문 = 선택
반복문 = 반복

확인 문제

문제 1

다음 코드의 출력 결과는?

printf("%d", 7 / 2);

① 2 ② 3 ③ 3.5 ④ 4


문제 2

다음 코드의 출력 결과는?

printf("%d", 7 % 2);

① 0 ② 1 ③ 2 ④ 3


문제 3

C언어에서 “같습니다”를 비교하는 연산자는?

===!=>=


문제 4

다음 조건이 의미하는 것은?

age >= 13 && age <= 19

① age가 13보다 작거나 19보다 큽니다 ② age가 13 이상이고 19 이합니다 ③ age가 13이 아니고 19도 아닙니다 ④ age가 무조건 19보다 큽니다


문제 5

다음 코드의 출력 결과는?

int a = 5;
int b;

b = a++;

printf("%d %d", a, b);

5 55 66 56 6


문제 6

다음 코드의 출력 결과는?

int a = 5;
int b;

b = ++a;

printf("%d %d", a, b);

5 55 66 56 6


문제 7

다음 코드의 출력 결과는?

int i;

for (i = 1; i <= 3; i++) {
    printf("%d", i);
}

123012234111


문제 8

다음 코드의 출력 결과는?

int i;
int sum = 0;

for (i = 1; i <= 4; i++) {
    sum += i;
}

printf("%d", sum);

① 4 ② 6 ③ 10 ④ 15


문제 9

다음 코드의 출력 결과는?

int i;

for (i = 1; i <= 5; i++) {
    if (i == 3) {
        continue;
    }
    printf("%d", i);
}

12345124512345


문제 10

다음 중 do~while문의 특징으로 맞는 것은?

① 조건이 거짓이면 절대 실행되지 않습니다 ② 반드시 정확히 한 번만 실행됩니다 ③ 조건 검사 전에 최소 한 번은 실행됩니다 ④ 반복문 안에서만 switch를 사용할 수 있습니다


정답과 해설은 절별 확인문제 정답해설에서 확인합니다.

다음 2장 3절은 함수, 변수 범위, 재귀입니다. 2장 2절에서 반복으로 여러 번 실행하는 법을 배웠다면, 2장 3절에서는 코드를 덩어리로 묶어서 다시 사용하는 법을 배웁니다.

목차

이번 절의 큰 그림
연산자 기본
연산자란?
산술·관계·논리 연산
산술 연산자
정수 나눗셈
나머지 연산자 %
관계 연산자
===는 다릅니다
논리 연산자
AND &&
OR ||
NOT !
논리 연산 진리표
대입과 증감
대입 연산자
증감 연산자 ++, --
전위형과 후위형
후위 증가 a++
전위 증가 ++a
조건 연산자
비트 연산자
연산자 우선순위
조건문
조건문이란?
if
if-else
else if
조건식에서 0과 0이 아닌 값
중첩 if문
switch
break가 중요한 이유
ifswitch 비교
반복문
반복문이란?
for
for문 구조 자세히 보기
1부터 10까지 합 구하기
while
for문과 while문 비교
do~while
반복문 3개 비교
흐름 제어와 코드 추적
break
continue
breakcontinue 비교
중첩 반복문
코드 추적 예제 1
코드 추적 예제 2
코드 추적 예제 3
출제 예시형 코드
무한 반복
goto
C 제어 흐름 전체 정리
자주 혼동되는 출제 포인트
혼동 포인트 1. 정수 나눗셈
혼동 포인트 2. 나머지 연산자
혼동 포인트 3. ===
혼동 포인트 4. &&&
혼동 포인트 5. 후위 증가와 전위 증가
혼동 포인트 6. switch의 break
혼동 포인트 7. do~while은 최소 한 번 실행
혼동 포인트 8. for문의 범위
이번 절의 핵심 정리
산술 연산자
관계 연산자
논리 연산자
조건문
switch문
for문
while문
do~while문
break와 continue
핵심 한 문장
확인 문제
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
문제 7
문제 8
문제 9
문제 10