데이터 타입
변수의 데이터 타입으로 사용할 수 있는 것들
- bool: 불리언 표현, (예) True, False, 1, 0, yes, no
- char: 문자 하나 (예) 'a', 'Z', '?'
- string: 문자열
- int: 특정 크기 또는 특정 비트까지의 정수 (예) 5, 28, -3, 0
- long: 더 큰 크기의 정수
- float: 부동소수점을 갖는 실수 (예) 3.14, 0.0, -28.56
- double: 부동소수점을 포함한 더 큰 실수
* int는 대략 40억까지 셀 수 있기 때문에 40억게 이상의 데이터를 가진 일부 거대 기업과 같은 상황이 아닌 일반 사용자들은 대부분 정수에 int를 사용
CS50 라이브러리 내의 get 함수
- get_char
- get_double
- get_float
- get_int
- get_long
- get_string
형식 지정자
printf 함수에서는 각 데이터 타입을 위한 형식 지정자를 사용할 수 있다. 데이터 타입 마다 사용되는 형식 지정자를 적절히 사용해야 한다.
- %c : char
- %f : float, double
- %i : int
- %li : long
- %s : string
기타 연산자 및 주석
그 외에도 아래 목록과 같이 다양한 수학 연산자, 논리 연산자, 주석 등이 기호로 정의되어 있다.
- +: 더하기
- -: 빼기
- *: 곱하기
- /: 나누기
- %: 나머지
- &&: 그리고
- ||: 또는
- //: 주석
정수와 실수를 받아서 출력해보기
① get_int ( 정수 값을 받아오는 CS50 라이브러리에 있는 함수 )
#include<cs50.h>
#include<stdio.h>
int main(void)
{
int age = get_int("what's your age?\n");
printf("Your are at least %i days old.\n",age*365);
}
- 사용자의 나이는 오른쪽에서 왼쪽으로 복사되어 age라는 변수에 저장
- 그 변수의 종류는 int 정수 → printf 함수에 이번에는 문자가 아닌 정수이기 때문에 %i로 days의 인자를 받아주고 출력
- 이 사람의 나이를 일 수로 환산하면? 위와 같은 코드로 작성 가능 !
② get_float (실수(float)값을 받아오는 CS50 라이브러리에 있는 함수)
#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 함수를 사용하여 물건의 가격을 물어보고 가격을 받아 price에 저장
- 그런 다음 세금을 포함한 값을 계산해서 출력 (메사추세츠의 부가세는 6.25%)
- 총액은 실수(float)이므로 %f를 사용
- 코드를 실행해서 가격을 100으로 넣으면 → 결과 값으로 105.250000이 나온다.
- 하지만 소수점이 6번째 자리까지 나와 보기에 안 좋다.
- 소수점 2번째 자리까지 나오게 하려면 ? 아래 코드와 같이 %f → %2f 로 바꿔주기.
printf("Your total is %2f\n",price*1.0625);
짝수인지 홀수인지 알려주는 코드짜기
- get_int로 사용자들에게 정수인 숫자를 받아서 n에 저장
- 2로 나누어 나머지가 0이냐 1이냐를 통해 홀수와 짝수를 구분해 줌 (* 짝수면 나머지가 0이 될 것이고 홀수면 1이 될 것)
- if ( n % 2 == 0 ) 을 풀어 쓰면 n을 2로 나누었을 때 나머지가 0이면 printf("even\n"); → even(짝수)을 출력
- 홀수를 출력하는 것은 왜 else if (n % 2 == 1)으로 하지 않았을까? 짝수 아니면 홀수 이기 때문에 else로도 충분하기 때문
주석
C에서는 //로 주석을 달 수 있다.
주석은 왜 다는 것일까?
- 주석은 이 코드가 무슨 일을 하는지 설명하는 것
- 여러분의 친구, 동료, 혹은 조교 등 여러분들이 짠 코드를 처음보는 사람들에게 설명이 필요하기 때문
- 만약 코드가 수 백, 수 천줄이 되면 주석이 없다면 부분 부분마다 어떤 일을 하는지 찾기 힘들 것
- 자신이 짠 코드라고 해도 한달 뒤, 일년 뒤에 보면 새롭기 때문에 꼭 타인이 아닌 자기 자신에게도 해당
- 그렇기 때문에 주석으로 잘 설명하는 습관이 중요
※ 참고) #include<cs50.h> 는 무엇인가요?
CS50 수업을 위해 만들어진 라이브러리 입니다. 라이브러리는 여러 함수들을 모아둔 것이라고 볼 수 있습니다. CS50 수업에서는 여러분들께서 좀 더 쉽게 코딩을 짤 수 있게 CS50 라이브러리 안에 여러 함수(get_int, get_double, get_float 등등)를 만들어 두었습니다.
반면에 C에는 표준 라이브러리도 있습니다. 우리가 처음부터 사용한 #inclue<stdio.h>가 표준 라이브러리 중 하나 입니다. 가장 많이 쓰고 가장 보편적으로 사용하는 라이브러리입니다. 그 밖에도 <math.h>, <time.h> 등 자신이 코딩하는데 필요한 함수들을 그때 그때 라이브러리를 불러와서 다른 사람들이 만들어둔 함수를 사용할 수 있습니다.
그렇다면 sandbox.cs50.io가 아닌 Visual Studio 같은 곳에서 CS50 라이브러리를 바로 사용이 가능할까요? 답은 사용할 수 없습니다. 표준 라이브러리는 기본적으로 설치가 되어 있기 때문에 사용이 가능하지만 앞서 말씀드렸듯이 CS50 라이브러리는 수업을 위해 만들어진 라이브러리 입니다. 그래서 sandbox.cs50.io 처럼 미리 설치가 된 곳이 아니면 따로 설치를 하여야만 사용이 가능합니다.
출처 : https://www.boostcourse.org/cs112/lecture/119008/?isDesc=false
'boostcourse > CS50' 카테고리의 다른 글
CS50 3. 배열 (2) - 배열 (0) | 2022.10.23 |
---|---|
CS50 3. 배열 (1) - 컴파일링, 디버깅, 코드의 디자인 (0) | 2022.10.22 |
CS50 2. C 언어 (2) - 조건문과 루프 (0) | 2022.10.22 |
CS50 2. C 언어 (1) - C기초, 문자열 (0) | 2022.10.22 |
CS50 1. 컴퓨터 사고 (2) - 스크래치 (0) | 2022.10.22 |