안동민 개발노트 아이콘

안동민 개발노트

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조건 연산자비트 연산자연산자 우선순위조건문조건문이란?ifif-elseelse if조건식에서 0과 0이 아닌 값중첩 if문switchbreak가 중요한 이유ifswitch 비교반복문반복문이란?forfor문 구조 자세히 보기1부터 10까지 합 구하기whilefor문과 while문 비교do~while반복문 3개 비교흐름 제어와 코드 추적breakcontinuebreakcontinue 비교중첩 반복문코드 추적 예제 1코드 추적 예제 2코드 추적 예제 3출제 예시형 코드무한 반복gotoC 제어 흐름 전체 정리자주 혼동되는 출제 포인트혼동 포인트 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