티스토리 뷰

CS/C

[C언어] 자료형, 형식 지정자, 연산자

무화과(Fig) 2023. 7. 25. 12:51

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
링크
«   2024/11   »
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
글 보관함