10.1 리터럴 사용하기

먼저 리터럴을 사용해보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

literal.c

#include <stdio.h>

int main()
{
    printf("%d\n", 10);                 // 10: 정수 리터럴
    printf("%f\n", 0.1f);               // 0.100000: 실수 리터럴
    printf("%c\n", 'a');                // a: 문자 리터럴
    printf("%s\n", "Hello, world!");    // Hello, world!: 문자열 리터럴

    return 0;
}

실행 결과

10
0.100000
a
Hello, world!

여기서는 값을 변수에 저장하지 않고 printf 함수에서 바로 출력하였습니다. 이렇게 소스 코드상에서 10, 0.1f, 'a', "Hello, world!"처럼 값을 그대로 입력한 것이 리터럴입니다.

리터럴은 반드시 표기 방법을 지켜야 합니다. 숫자는 숫자 그대로 사용해도 되지만 문자는 반드시 작은따옴표로 묶어주어야 하고, 문자열은 큰따옴표로 묶어줍니다. 문자나 문자열을 따옴표로 묶어주지 않으면 변수, 함수 등으로 인식되므로 주의합니다.

큰따옴표로 묶은 문자열을 출력하려면 printf 함수에서 서식 지정자로 %s를 사용합니다.

이번에는 정수 리터럴 표기 방법을 알아보겠습니다.

integer_literal.c

#include <stdio.h>

int main()
{
    printf("%d\n", 19);        // 19: 10진 정수 리터럴
    printf("0%o\n", 017);      // 017: 8진 정수 리터럴
    printf("0x%X\n", 0x1F);    // 0x1F: 16진 정수 리터럴

    return 0;
}

실행 결과

19
017
0x1F

10진수는 숫자 그대로 표기하면 되고, 8진수는 숫자 앞에 0을 붙이고, 16진수는 0x를 붙입니다. 이때 printf에서 8진수를 출력하려면 서식 지정자로 %o를 사용합니다. 여기서 %o로는 8진수 숫자만 출력되므로 10진수와 구분하기 힘듭니다. 그래서 보통 %o앞에 숫자 0을 붙여서 017형태로 출력합니다.

8진수는 최댓값이 7이므로 8과 9를 사용할 수 없고, 16진수는 9 다음에 알파벳 대소문자로 A부터 F까지 사용할 수 있습니다.

참고

  • %o: 8진수(octal number)의 약어로 o를 사용합니다.

실수는 리터럴 표기 방법은 다음과 같습니다.

real_number_literal.c

#include <stdio.h>

int main()
{
    printf("%f\n", 0.1f);       // 0.100000: 실수 리터럴 소수점 표기
    printf("%f\n", 0.1F);       // 0.100000: 실수 리터럴 소수점 표기
    printf("%f\n", 1.0e-5f);    // 0.000010: 실수 리터럴 지수 표기법
    printf("%f\n", 1.0E-5F);    // 0.000010: 실수 리터럴 지수 표기법
}

실행 결과

0.100000
0.100000
0.000010
0.000010

Unit 8 실수 자료형 사용하기에서 학습한 것과 같습니다. 실수 리터럴이 float 크기라면 끝에 f또는 F를 붙이고, long double크기라면 l또는 L을 붙입니다. 그리고 지수 표기법은 e 또는 E와 지수를 표기합니다.