이 영역을 누르면 첫 페이지로 이동
Daily Growth 블로그의 첫 페이지로 이동

Daily Growth

페이지 맨 위로 올라가기

Daily Growth

Loving you is the reason I live. That’s why every day is precious, a step toward my dreams and you.

CS50 C 언어 기초 정리 | 데이터 타입, 입력 & 출력, 연산자 총정리

  • 2025.03.14 13:44
  • IT

 

데이터 타입 및 관련 내용 정리

 

1. 데이터 타입 개요

C 언어에서 중요한 것은 데이터 타입을 정확히 지정하는 것이다. 변수에 어떤 값이 들어갈지를 정의하고, 그 값의 크기나 범위를 결정하는 것이기 때문이다. C에서 자주 사용하는 데이터 타입은 다음과 같다:

  • bool: 불리언 타입, True나 False, 혹은 1과 0으로 표현된다. yes와 no도 이와 유사한 표현이다.
  • char: 문자 하나를 저장하는 타입이다. 예시로는 'a', 'Z', '?' 등이 있다.
  • string: 여러 문자를 하나의 값으로 저장하는 타입으로 "Hello, world!"처럼 사용된다.
  • int: 정수형 타입, 예를 들어 5, -3, 28, 0 등이 있다. 이 타입은 보통 4바이트를 차지하며, 약 -21억부터 21억까지 저장할 수 있다.
  • long: 더 큰 정수값을 저장할 수 있는 타입이다. 예시로는 1234567890과 같은 값이 있다.
  • float: 실수형 타입으로, 부동소수점 숫자를 저장한다. 예를 들어 3.14, -28.56 등이 있다.
  • double: float보다 더 큰 범위와 더 높은 정밀도를 가진 실수형 타입이다. 예시로 3.1415926535 같은 값이 있다.

참고: 대부분의 경우 int 타입만으로 충분하므로, 이 타입을 자주 사용한다. int는 대체로 약 40억까지 값을 저장할 수 있다.

 

2. CS50 라이브러리 내의 get 함수

CS50에서 제공하는 get 함수들은 사용자로부터 다양한 데이터를 입력받을 때 매우 유용하다. 이 함수들은 입력된 값을 자동으로 해당 타입으로 변환해주기 때문에 편리하다. 다음은 주요 함수들이다:

  • get_char(): 문자 하나를 입력받는다.
  • get_double(): 실수값을 입력받는다.
  • get_float(): 소수점을 포함한 실수값을 입력받는다.
  • get_int(): 정수값을 입력받는다.
  • get_long(): 긴 정수값을 입력받는다.
  • get_string(): 문자열을 입력받는다.

이 함수들 덕분에 코드가 더 깔끔해지고, 실수할 확률도 줄어든다. CS50의 라이브러리가 정말 편리하고, 이 강의를 통해 많은 것을 배우고 있어 감사하다☺️.

 

3. printf 형식 지정자

printf() 함수는 출력할 데이터를 형식에 맞춰 출력할 수 있게 도와준다. 각 데이터 타입에 맞는 형식 지정자를 사용해야 하는데, 다음과 같다:

  • %c: 문자 (char)
  • %f: 실수 (float, double)
  • %i: 정수 (int)
  • %li: 긴 정수 (long)
  • %s: 문자열 (string)

예시로, 나이를 출력하는 코드를 작성할 때:

printf("나이는 %i살입니다.\n", age);

이 코드의 출력 결과는:

나이는 25살입니다.

 

 

 

4. 연산자 및 주석

C에서 자주 사용하는 연산자는 크게 두 가지로 나눠볼 수 있다. 수학 연산자와 논리 연산자:

  • 수학 연산자:
    • +: 더하기
    • -: 빼기
    • *: 곱하기
    • /: 나누기
    • %: 나머지
  • 논리 연산자:
    • &&: 논리 AND
    • ||: 논리 OR

주석은 코드에 대한 설명을 덧붙여서 다른 사람이나 자신이 코드를 이해하는 데 도움을 준다. 한 줄 주석은 //, 여러 줄 주석은 /* */로 작성한다.

 

 

5. 정수와 실수 입력 및 출력

정수를 입력받고 일 수로 변환하는 코드를 작성해보자(:

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int age = get_int("What's your age?\n");
    printf("You are at least %i days old.\n", age * 365);
}

이 코드는 사용자가 나이를 입력하면 365일을 곱하여 최소한 몇 일 동안 살아왔는지 계산하는 코드이다.

이걸 간단하게 수정하면 아래와 같다.

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    printf("You are at least %i days old.\n", get_int("What's your age?\n") * 365);
}

이렇게 get_int()에서 받은 값을 바로 연산에 넣어줄 수 있다. 코드가 짧고 깔끔하지만 가독성이 조금 떨어질 수 있으니 상황에 맞게 선택하는 것이 좋다.

 

6. 실수를 입력받아 총액을 계산하는 코드:

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    float price = get_float("What's the price?\n");
    printf("Your total is %f\n", price * 1.0625);
}

여기서 나온 출력 값은 소수점이 너무 길다. 이를 소수점 두 자리까지 출력하려면 다음처럼 수정하면 된다.

printf("Your total is %.2f\n", price * 1.0625);

이렇게 하면 출력 결과는 다음과 같다.

What's the price?
100
Your total is 106.25

 

 

 

7. 짝수/홀수 판별 코드

사용자로부터 입력받은 숫자가 짝수인지 홀수인지 판단하는 코드 예시이다. 이 코드에서 조건문을 사용하는 방법을 알 수 있다:

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int n = get_int("n: ");
    if (n % 2 == 0)
    {
        printf("even\n");
    }
    else
    {
        printf("odd\n");
    }
}

n % 2 == 0이면 짝수, 아니면 홀수로 처리된다. else로만 처리할 수 있는 이유는 짝수가 아니면 자동으로 홀수이기 때문이다.

 

8. 주석의 중요성

주석은 코드를 이해하는 데 매우 중요하다. 코드가 길어지면 주석이 없으면 누구도 그 코드를 이해하기 어렵다. 예를 들어, 아래처럼 주석을 작성할 수 있다.

#include <stdio.h>

int main(void)
{
    // 사용자에게 나이를 입력받음
    int age = 25;

    // 나이를 일 수로 변환하여 출력
    printf("You are at least %i days old.\n", age * 365);
}

이렇게 주석을 추가해두면 코드의 기능을 한눈에 알 수 있어 다른 사람들이 코드를 쉽게 이해할 수 있다.

 

9. #include <cs50.h>와 표준 라이브러리

CS50 라이브러리는 수업을 위해 만들어진 라이브러리로, get_int()나 get_string() 함수 등을 제공한다. 이 라이브러리를 사용하면 코딩이 훨씬 쉬워진다. 특히 C에서 복잡한 입출력을 할 때 매우 유용하다.

 

반면, C 표준 라이브러리에는 stdio.h, math.h, time.h와 같은 기본적으로 제공되는 라이브러리들이 있다. CS50 라이브러리는 설치가 필요하고, Visual Studio 같은 IDE에서는 사용하기 힘들지만, CS50 환경에서는 기본적으로 제공되므로 편리하다.

반응형

'IT' 카테고리의 다른 글

C 프로그래밍: 사용자 정의 함수와 중첩 루프  (0) 2025.03.16
리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드  (0) 2025.03.15
C 프로그래밍 기초 정리 | 변수, 조건문, 반복문  (0) 2025.03.13
기초부터 차근차근 배우는 C 언어 - 'Hello, World!'부터 시작하는 프로그래밍 입문  (1) 2025.03.12
ChatGPT와 프롬프트 엔지니어링: 생성형 AI 활용법과 주의사항  (0) 2025.03.10

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • C 프로그래밍: 사용자 정의 함수와 중첩 루프

    C 프로그래밍: 사용자 정의 함수와 중첩 루프

    2025.03.16
  • 리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드

    리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드

    2025.03.15
  • C 프로그래밍 기초 정리 | 변수, 조건문, 반복문

    C 프로그래밍 기초 정리 | 변수, 조건문, 반복문

    2025.03.13
  • 기초부터 차근차근 배우는 C 언어 - 'Hello, World!'부터 시작하는 프로그래밍 입문

    기초부터 차근차근 배우는 C 언어 - 'Hello, World!'부터 시작하는 프로그래밍 입문

    2025.03.12
다른 글 더 둘러보기

정보

Daily Growth 블로그의 첫 페이지로 이동

Daily Growth

  • Daily Growth의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 분류 전체보기 (443) N
      • Design History (69)
      • IT (144) N
      • Typography (13)
      • UX • UI Design (10)
      • Money (62)
      • Health (53)
      • Words (6)
      • Reading (21)
      • English (64)

    나의 외부 링크

    • lody.design
    • lody.canada
    • lody.study
    • lody.diary

    정보

    self-improvement의 Daily Growth

    Daily Growth

    self-improvement

    블로그 구독하기

    • 구독하기
    • 네이버 이웃 맺기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. Copyright © self-improvement.

    티스토리툴바