C/C++ 기초

연산자와 식

연산자는 값을 조합해 식을 만듭니다. C와 C++는 거의 모든 연산자가 같고, 초보자를 놀라게 하는 정수 나눗셈 규칙도 같습니다.

연산자와 식이란?

연산자는 값을 조합해 식을 만듭니다. C와 C++는 거의 모든 연산자가 같고, 초보자를 놀라게 하는 정수 나눗셈 규칙도 같습니다.

C와 C++에서 산술, 대입, 비교, 논리 연산자를 사용합니다.

중요한 점

  • Compiler warning을 켜고 모두 해결하세요.
  • 각 값의 type과 lifetime을 파악하세요.
  • 입력과 배열 경계를 검증하세요.

C와 C++ 코드 예제

C
실행 →
main.c
#include <stdio.h>

int main(void) {
    int a = 17, b = 5;

    printf("a + b = %d\n", a + b);
    printf("a - b = %d\n", a - b);
    printf("a * b = %d\n", a * b);
    printf("a / b = %d\n", a / b);              /* integer division drops the fraction */
    printf("a %% b = %d\n", a % b);             /* remainder */
    printf("a / 5.0 = %.1f\n", a / 5.0);        /* one double operand gives a double */

    int total = 10;
    total += 5;
    total *= 2;
    printf("total = %d\n", total);

    int count = 0;
    count++;
    printf("count = %d\n", count);

    /* Comparisons and logical operators give 1 (true) or 0 (false). */
    printf("a > b: %d, a == 17: %d\n", a > b, a == 17);
    printf("a > 10 && b > 10: %d\n", a > 10 && b > 10);
    printf("a > 10 || b > 10: %d\n", a > 10 || b > 10);
    return 0;
}
예상 출력
a + b = 22
a - b = 12
a * b = 85
a / b = 3
a % b = 2
a / 5.0 = 3.4
total = 30
count = 1
a > b: 1, a == 17: 1
a > 10 && b > 10: 0
a > 10 || b > 10: 1
C++
실행 →
main.cpp
#include <iostream>

int main() {
    int a = 17, b = 5;

    std::cout << "a + b = " << a + b << '\n';
    std::cout << "a - b = " << a - b << '\n';
    std::cout << "a * b = " << a * b << '\n';
    std::cout << "a / b = " << a / b << '\n';           // integer division drops the fraction
    std::cout << "a % b = " << a % b << '\n';           // remainder
    std::cout << "a / 5.0 = " << a / 5.0 << '\n';       // one double operand gives a double

    int total = 10;
    total += 5;
    total *= 2;
    std::cout << "total = " << total << '\n';

    int count = 0;
    count++;
    std::cout << "count = " << count << '\n';

    // bool values print as true/false with std::boolalpha.
    std::cout << std::boolalpha;
    std::cout << "a > b: " << (a > b) << ", a == 17: " << (a == 17) << '\n';
    std::cout << "a > 10 && b > 10: " << (a > 10 && b > 10) << '\n';
    std::cout << "a > 10 || b > 10: " << (a > 10 || b > 10) << '\n';
}
예상 출력
a + b = 22
a - b = 12
a * b = 85
a / b = 3
a % b = 2
a / 5.0 = 3.4
total = 30
count = 1
a > b: true, a == 17: true
a > 10 && b > 10: false
a > 10 || b > 10: true

C와 C++ 비교

int끼리 나누면 소수 부분이 버려지므로 17 / 5는 3입니다. 소수를 남기려면 한쪽을 double로 만드세요. 비교와 && / ||의 결과는 C에서는 1 또는 0, C++에서는 true 또는 false이며 std::boolalpha를 쓰면 단어로 출력됩니다.

C

C는 작은 절차형 API와 표현 세부 사항을 드러냅니다.

C++

C++는 저수준 모델을 유지하며 더 안전한 타입을 추가합니다.

연습 문제

두 버전을 실행하고 수정하여 각 언어의 보장을 관찰하세요.

  • 잘못된 입력과 경계값을 추가하세요.
  • -Wall -Wextra -Wpedantic으로 컴파일하세요.
  • 선언과 구현을 분리하세요.

챌린지로 연습하기

이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.

모든 챌린지