공통

printf

iseohyun 2022. 1. 6.

목차

    - 3줄 요약 -

    • printf는 print(출력) + format(형식)을 의미한다.
    • 문법은 ("%포멧", 변수1, 변수2)이다.
    • %? 에서 ?의 형식을 모두 외울 필요 없고, 그 때 그 때 가져다가 쓰면 된다. 있다는 것만 알고 다음 단원 ㄱㄱ

    printf 함수는 가장 초반에 등장하지만, 굉장히 잘 구현되었고, 이해하기 어려운 함수이다. 문자열을 출력할 때, 포멧을 정해주고, 그 포멧에 맞추어서 이쁘게 편집한 후에 출력하는 기능을 담당한다. 출력 방법을 암기할 필요는 없다.

    • printf("포멧", args ...);
    포멧 설명 예제코드 출력
    %d, %i 10진수 출력
    단, %i는 8진수(01)와, 16진수 입력(0x1)을 받을 수 있다.
    printf("%d\n", 0xff); 255
    %u 10진수 출력(부호없음) printf("%u\n", -1); 4294967295
    %f, %F 소수 출력 double f = 1;
    for (int i = 1; i < 9; i++) {
       f /= 10;
       printf("%f\n", f);
    }
    0.100000
    0.010000
    0.001000
    0.000100
    0.000010
    0.000001
    0.000000
    0.000000
    %e, %E 부동소수점으로 표현
    (대/소문자 : E/e가 다름)
    double f = 1;
    for (int i = 1; i < 9; i++) {
       f /= 10;
       printf("%E\n", f);
    }
    1.000000E-01
    1.000000E-02
    1.000000E-03
    1.000000E-04
    1.000000E-05
    1.000000E-06
    1.000000E-07
    1.000000E-08
    %g, %G 소수와 부동소수점 병합
    (대/소문자 : E/e가 다름)
    double f = 1;
    for (int i = 1; i < 9; i++) {
       f /= 10;
       printf("%g\n", f);
    }
    0.1
    0.01
    0.001
    0.0001
    1e-05
    1e-06
    1e-07
    1e-08
    %x, %X 16진수로 출력 printf("%x\n", 123456789);
    printf("%X\n", 123456789);
    75bcd15
    75BCD15
    %o 8진수로 출력 printf("%o\n", 123456789); 726746425
    %s 문자열 출력(null까지 출력) printf("%s\n", "안녕하세요");
    printf("%s\n", "안녕\0하세");
    안녕하세요
    안녕
    %c 문자 출력 printf("%c\n", 'h');
    printf("%c\n", "Hello");
    h
    0
    %p 주소를 표현하기 위한 방식
    (%X로 출력시 8자리 이상에서 문제 발생)
    unsigned long long p = 0xABCDEF12;

    for (int i = 0; i <= 20; i+=4) {
       printf("%p\n", p << i);
    }

    -------------------
    for (int i = 0; i <= 20; i+=4) {
       printf("%016x\n", p << i);
    }

    00000000ABCDEF12
    0000000ABCDEF120
    000000ABCDEF1200
    00000ABCDEF12000
    0000ABCDEF120000
    000ABCDEF1200000
    ----------------
    00000000abcdef12
    00000000bcdef120
    00000000cdef1200
    00000000def12000
    00000000ef120000
    00000000f1200000
    %a, %A double 출력
    16진수로 표현
    unsigned long long p = 0xABCDEF12;

    for (int i = 0; i <= 40; i+=8) {
         printf("%A\n", p << i);
    }
    0X0.00000ABCDEF12P-1022
    0X0.000ABCDEF1200P-1022
    0X0.0ABCDEF120000P-1022
    0X1.BCDEF12000000P-1013
    -0X1.DEF1200000000P-323
    -0X1.F120000000000P+223
    %n 삭제됨
    (자바에서 새줄표시)
      (오류)

    ※ 출처 : https://en.wikipedia.org/wiki/Printf_format_string

    '공통' 카테고리의 다른 글

    한글  (135) 2022.01.06
    부동소수점  (0) 2022.01.06
    컴퓨터 구조  (0) 2022.01.04
    변수 선언하기  (0) 2022.01.03
    포탄 그래프 코딩하기  (0) 2022.01.02

    댓글