CS50 C 언어 기초 정리 | 데이터 타입, 입력 & 출력, 연산자 총정리
데이터 타입 및 관련 내용 정리
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 |
댓글
이 글 공유하기
다른 글
-
C 프로그래밍: 사용자 정의 함수와 중첩 루프
C 프로그래밍: 사용자 정의 함수와 중첩 루프
2025.03.16 -
리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드
리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드
2025.03.15 -
C 프로그래밍 기초 정리 | 변수, 조건문, 반복문
C 프로그래밍 기초 정리 | 변수, 조건문, 반복문
2025.03.13 -
기초부터 차근차근 배우는 C 언어 - 'Hello, World!'부터 시작하는 프로그래밍 입문
기초부터 차근차근 배우는 C 언어 - 'Hello, World!'부터 시작하는 프로그래밍 입문
2025.03.12