printf

Jaemyeong Lee·2024년 7월 31일
0

FastCampusC++

목록 보기
6/78

printf 함수 개요

printf 함수는 표준 출력(stdout)에 형식화된 문자열을 출력하는 함수입니다. 첫 번째 인자로 형식 문자열을 받고, 그 뒤로 출력할 값을 인자로 받습니다.

형식 문자열 (Format String)

형식 문자열은 출력할 형식을 지정하는 문자열로, 형식 지정자를 포함합니다. 형식 지정자는 % 기호로 시작하며, 출력할 데이터의 타입과 형식을 결정합니다.

형식 지정자 (Format Specifier)

형식 지정자는 printf 함수가 값을 출력할 때 사용할 형식을 지정합니다. 주요 형식 지정자는 다음과 같습니다:

형식 지정자설명
%d부호 있는 10진수 정수
%u부호 없는 10진수 정수
%o8진수 정수
%x16진수 정수 (소문자)
%X16진수 정수 (대문자)
%c문자
%s문자열
%f부동소수점 (소수점 표기)
%e부동소수점 (지수 표기)
%g부동소수점 (소수점 또는 지수 표기)
%p포인터
%%% 문자 출력

printf 함수 예제 코드

#include <cstdio>

int main()
{
    {
        // signed int 10진수 출력
        printf("%d + %d = %i\n", 2, 3, 2 + 3);
    }

    {
        // unsigned int 10진수 출력
        printf("%u + %u = %u\n", 3, 2, 3 + 2);
    }

    {
        // unsigned int 10진수 출력 형식으로 음수 int 출력
        printf("%u\n", -1);
    }

    {
        // unsigned char 10진수 출력 형식으로 음수 int 출력
        printf("%hhu\n", -1);
    }

    {
        // char 출력
        char ch = 'b';
        printf("%c%c\n", 'a', ch);
    }

    {
        // 부동소수점 출력(%f, %lf 같음)
        printf("%f - %f = %lf\n", 2.0, 3.0f, -1.0f);
    }

    {
        // unsigned int 8, 16진수 출력
        printf("%o, %x, %X\n", 10, 10, 10);
    }

    {
        // unsigned char 16진수 출력
        printf("%hhx\n", 255);
    }

    {
        // unsigned char 16진수 출력(overflow)
        printf("%hhx\n", 256);
    }

    {
        // 앞에 0을 채워 총 10글자로 맞추기
        printf("%010d\n", 1);
        printf("%010d\n", -1);
        printf("%010f\n", 1.1);
        printf("%010f\n", -1.1);
    }

    {
        // 소수점 자리수 표현
        printf("%010.1f\n", 1.1);
        printf("%010.1f\n", -1.1);
    }

    {
        // 앞에 여백을 넣기
        printf("%10d\n", 1);
        printf("%10d\n", -1);
        printf("%10f\n", 1.1);
        printf("%10f\n", -1.1);
    }

    {
        // 뒤에 여백을 넣기
        printf("%-10d\n", 1);
        printf("%-10d\n", -1);
        printf("%-10f\n", 1.1);
        printf("%-10f\n", -1.1);
    }

    {
        // % 출력하기
        printf("%%\n");
    }

    {
        // stdout을 output.txt로 연결
        freopen("output.txt", "w", stdout);
        printf("Hello World!");
    }
}

주요 개념 설명

  1. 서명된 정수형 출력:

    printf("%d + %d = %i\n", 2, 3, 2 + 3);
    • %d%i는 서명된 10진수 정수를 출력합니다.
  2. 부호 없는 정수형 출력:

    printf("%u + %u = %u\n", 3, 2, 3 + 2);
    • %u는 부호 없는 10진수 정수를 출력합니다.
  3. 부호 없는 정수로 음수 출력:

    printf("%u\n", -1);
    • %u를 사용하여 음수를 출력하면, 내부적으로 2의 보수로 처리된 결과를 출력합니다.
  4. 부호 없는 char로 음수 출력:

    printf("%hhu\n", -1);
    • %hhu는 부호 없는 char를 10진수로 출력합니다.
  5. 문자 출력:

    char ch = 'b';
    printf("%c%c\n", 'a', ch);
    • %c는 문자를 출력합니다.
  6. 부동소수점 출력:

    printf("%f - %f = %lf\n", 2.0, 3.0f, -1.0f);
    • %f%lf는 부동소수점을 출력합니다.
  7. 8진수, 16진수 출력:

    printf("%o, %x, %X\n", 10, 10, 10);
    • %o는 8진수, %x는 소문자 16진수, %X는 대문자 16진수로 출력합니다.
  8. 부호 없는 char의 16진수 출력:

    printf("%hhx\n", 255);
    printf("%hhx\n", 256);
    • %hhx는 부호 없는 char를 16진수로 출력합니다.
  9. 0으로 채워 출력:

    printf("%010d\n", 1);
    printf("%010d\n", -1);
    printf("%010f\n", 1.1);
    printf("%010f\n", -1.1);
    • %010d는 앞에 0을 채워 총 10자리로 출력합니다.
  10. 소수점 자리수 표현:

    printf("%010.1f\n", 1.1);
    printf("%010.1f\n", -1.1);
    • %010.1f는 소수점 이하 1자리까지 출력하고, 총 10자리로 출력합니다.
  11. 앞에 여백을 넣기:

    printf("%10d\n", 1);
    printf("%10d\n", -1);
    printf("%10f\n", 1.1);
    printf("%10f\n", -1.1);
    • %10d는 앞에 공백을 채워 총 10자리로 출력합니다.
  12. 뒤에 여백을 넣기:

    printf("%-10d\n", 1);
    printf("%-10d\n", -1);
    printf("%-10f\n", 1.1);
    printf("%-10f\n", -1.1);
    • %-10d는 뒤에 공백을 채워 총 10자리로 출력합니다.
  13. % 문자 출력:

    printf("%%\n");
    • %%는 % 문자를 출력합니다.
  14. stdout을 파일로 연결:

    freopen("output.txt", "w", stdout);
    printf("Hello World!");
    • freopen을 사용하여 stdout을 파일로 리디렉션합니다.
profile
李家네_공부방

0개의 댓글