티스토리 뷰
C에서는 정수나 문자열 외에도 다양한 데이터 타입이 정의되어 있다. 또한 각 타입에 맞는 형식 지정자를 통해 적절한 포맷으로 출력하고, 다양한 연산자를 통해 조건문을 설정하거나 데이터 값을 계산할 수 있다.
데이터 타입
아래 목록은 변수의 데이터 타입으로 사용할 수 있는 것들이다.
- 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 함수
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 : 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("Your are at least %i days old.\n", days);
}
get_int라는 정수 값을 받아오는 CS50 라이브러리에 있는 함수를 사용하였다. 사용자의 나이는 오른쪽에서 왼쪽으로 복사되어 age라는 변수에 저장되며 변수의 종류는 int 정수이다.
이 사람의 나이를 일 수로 환산한 값을 계산하기 위해 days라는 정수 변수에 age에 365를 곱한 수를 저장한다. 그리고 printf 함수에 이번에는 문자가 아닌 정수이기 때문에 %i로 days의 인자를 받아주고 출력해준다.
이 코드를 좀 더 간단하게 작성해보면 다음과 같다.
# include <cs50.h>
# include <stdio.h>
int main(void)
{
printf("Your are at least %i days old.\n", get_int("what's your age?\n") * 365);
}
age라는 변수를 없애버리고 age*365 대신에 get_int 함수를 넣어 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);
}
결과 값으로 105.250000이 나온다. 값이 너무 길기 때문에 소수점 2번째 자리까지 나오게 해보았다.
printf("Your total is %.2f \n", price*1.0625); // Your total is 106.25
짝수인지 홀수인지 알려주는 코드짜기
#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에 저장하였다. 이후 나머지가 0이면 짝수 아니면 홀수를 출력하도록 코드를 짰다.
주석
C에서는 //로 주석을 달 수 있다. 주석을 다는 이유는 내가 짠 코드를 처음보는 사람들에게 설명하고자 할 때 필요하기 때문이다. 또한 자신이 짠 코드라고 해도 한 달 뒤, 일년 뒤에 보면 새롭기 때문에 주석으로 잘 설명하는 습관이 중요하다.
// 주석입니다.
*참고) #include<cs50.h> 는 무엇인가?
CS50 수업을 위해 만들어진 라이브러리이다. (라이브러리는 여러 함수들을 모아둔 것)
반면에 C에는 표준 라이브러리도 있다. #inclue<stdio.h>가 표준 라이브러리 중 하나이다. (가장 많이 쓰고 가장 보편적으로 사용하는 라이브러리임)
'CS > C' 카테고리의 다른 글
[C언어] 증감연산자 (0) | 2023.07.19 |
---|---|
[C언어] 조건문과 루프 (0) | 2023.07.13 |
[C언어] 문자열 (0) | 2023.07.05 |
[C언어] C 기초 (1) | 2023.07.02 |
- Total
- Today
- Yesterday
- Next.js
- tanstackquery
- CSS
- js
- 프론트엔드
- 동기
- 배열
- 유사배열객체
- GitHub
- 중급 프로젝트
- hydrationboundary
- react
- 취업까지달린다
- 객체
- arguments
- Target
- Git
- 비동기
- map
- 제어 컴포넌트
- rest parameter
- 코드잇 스프린트
- 리액트
- 비제어 컴포넌트
- html
- 코드잇스프린트
- 스프린트프론트엔드6기
- innerhtml
- javascript
- currentTarget
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |