![[CS50] C언어 - 자료형, 형식 지정자, 연산자](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfqUQD%2FbtsHUOqPTXR%2FvqHBFGEI0FwiiUXsnRlsNk%2Fimg.jpg)
데이터 타입
변수의 데이터 타입으로 사용할 수 있는 것들은 다음과 같다.
크기는 시스템 및 컴파일러에 따라 다를 수 있지만, 일반적인 크기를 기준으로 설명한다.
bool
: 불리언 표현 (예: True, False, 1, 0, yes, no) / 1 Bytechar
: 문자 하나 (예: 'a', 'Z', '?') / 1 Bytestring
: 문자열 / 각 문자는 1 Byte, 한글은 2 Bytes지만 charset 마다 차이 존재int
: 특정 크기 또는 특정 비트까지의 정수 (예: 5, 28, -3, 0) / 4 Byteslong
: 더 큰 크기의 정수 / 8 Bytes, 64bit 시스템 기준float
: 부동소수점을 갖는 실수 (예: 3.14, 0.0, -28.56) / 4 Bytesdouble
: 부동소수점을 포함한 더 큰 실수 / 8 Bytes
일반 사용자는 대부분 정수형 데이터에 int
를 사용하지만, 일부 거대 기업이나 데이터가 40억 개를 초과하는 경우 long
을 사용하기도 한다.
CS50 라이브러리 내의 get 함수
CS50 라이브러리는 위와 같은 데이터 타입을 입력값으로 받을 수 있는 여러 함수를 포함한다.
get_char
get_double
get_float
get_int
get_long
get_string
형식 지정자
printf
함수에서는 각 데이터 타입을 위한 형식 지정자를 사용할 수 있다.
문자열$_{string}$인 answer
변수를 %s로 불러오는 것을 기억할 것이다.
여러 가지 데이터 타입마다 사용되는 형식 지정자를 알아보자.
%c
: char%f
: float, double%i
: int%li
,%ld
: long%s
: string
기타 연산자 및 주석
다양한 수학 연산자, 논리 연산자, 주석 등이 기호로 정의되어 있다.
+
: 더하기-
빼기*
: 곱하기/
: 나누기%
: 나머지&&
: 그리고||
: 또는//
: 주석
정수와 실수를 받아서 출력해보기
이번에는 문자열 대신 나이(정수)를 사용해보자.
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int age = get_int("What's your age?\\n");
int days = age * 365;
printf("You are at least %i days old.\\n", days);
}
이 코드는 get_int
함수를 사용하여 정수 값을 받아오는 예제이다.
사용자가 입력한 나이를 age
변수에 저장하고, 이를 일 수로 환산하여 출력한다.
printf
함수에서 %i 형식 지정자를 사용하여 정수를 출력한다.
이 코드를 아래와 같이 간단하게 작성할 수도 있다.
#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);
}
좀 더 극단적으로 줄이면,
#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);
}
하지만 너무 길어서 가독성이 떨어질 수 있다.
디자인 측면에서는 코드가 위에서 아래로 읽히는 것이 좋다.
따라서, 읽기 편하고 이해하기 쉬운 코드를 작성하는 것이 중요하다.
이번에는 실수(float)를 사용해보자.
#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);
}
이 코드는 get_float
함수를 사용하여 물건의 가격을 받아온다.
세금을 포함한 값을 계산하여 출력한다. (메사추세츠의 부가세는 6.25%라고 한다.)
총액은 실수(float)이므로 %f를 사용하여 출력한다.
이 코드를 실행하면, 결과 값으로 105.250000이 나온다.
보기 좋게 소수점 2번째 자리까지 출력하도록 수정해보자.
printf("Your total is %.2f\\n", price * 1.0625);
이렇게 하면 소수점 2번째 자리까지 출력된다.
짝수인지 홀수인지 알려주는 코드 작성하기
#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");
}
}
이 코드는 get_int
로 사용자에게 정수를 입력받아 n
에 저장한다.
입력받은 숫자가 짝수인지 홀수인지 판단하기 위해 2로 나눈 나머지를 확인한다.
나머지가 0이면 짝수, 그렇지 않으면 홀수이다.
주석
C에서는 //
로 주석을 달 수 있다:
// 주석
주석은 코드의 설명을 담고 있어 코드를 처음 보는 사람이나 나중에 다시 보는 사람에게 유용하다.
#include <cs50.h> 유의사항
CS50 수업을 위해 만들어진 라이브러리로 여러 함수들을 모아둔 것이다.
CS50 수업에서는 좀 더 쉽게 코딩을 할 수 있도록 여러 함수(get_int, get_double, get_float 등)를 제공한다.
반면에, C에는 표준 라이브러리도 있다. 우리가 사용한 #include <stdio.h>
는 표준 라이브러리 중 하나이다.
표준 라이브러리는 기본적으로 설치되어 있어 바로 사용할 수 있지만 CS50 라이브러리는 따로 설치해야 한다.
설치 방법은 CS50 라이브러리 문서를 참고하자.
References
모두를 위한 컴퓨터 과학 (CS50 2019)
부스트코스 무료 강의
www.boostcourse.org
'CSE > CS 기초' 카테고리의 다른 글
[CS50] C언어 - 하드웨어의 한계 (0) | 2024.06.12 |
---|---|
[CS50] C언어 - 사용자 정의 함수, 중첩 루프 (0) | 2024.06.12 |
[CS50] C언어 - 문자열 (1) | 2024.06.12 |
[CS50] C언어 - C 기초, 컴파일러 (1) | 2024.06.10 |
[CS50] 컴퓨팅 사고 - 알고리즘 (0) | 2024.06.10 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!