ft_printf 설명(정수)

구름코딩·2020년 8월 11일
0

d, i, u, x, X

%d, %i

10진수 정수

%u

10진수 양의 정수

%x, %X

16진수 양의 정수(소문자, 대문자)

int main(void)
{
printf("%*.*x\n", 1, 50, 5000);
printf("%*.*x\n", 1, 0, 10);

printf("1 >%1.0x<\n", 10);
printf("2 >%2.0x<\n", 10);
printf("3 >%3.0x<\n", 10);
printf("4 >%4.0x<\n", 10);
printf("5 >%0.0x<\n", 10);
printf("6 >%0.1x<\n", 10);
printf("7 >%0.2x<\n", 10);
printf("8 >%0.3x<\n", 10);
printf("9 >%0.4x<\n", 10);
printf("A >%0.5x<\n", 10);
printf("B >%6.5x<\n", 10);

printf("\n=======\n\n");
printf("%*.*x\n%*.*X\n", 1, 50, 5000, 1, 0, 10);
}

00000000000000000000000000000000000000000000001388 // 소수점 아래 50글자, 5000을 16진수화 할 경우 1388
a
1 >a<
2 > a<
3 >  a<
4 >   a<
5 >a< //소수점이 아닌 양수 한글자
6 >a< //소수점 아래 한글자
7 >0a< //소수점 아래 두글자
8 >00a<
9 >000a<
A >0000a<
B > 0000a<

=======

00000000000000000000000000000000000000000000001388
A

%*.*x에서 x는 부호없는 16진수 정수로 출력해주며 알파벳은 소문자로 출력하는 서식지정자이며
앞의 *에 주어지는 수는 출력폭을 지정해주며 뒤의 *에 주어지는 수는 소수 몇번째 자리까지 출력할지 지정해주는 수이다

따라서, printf("%*.*x\n", 1, 50, 5000);의 경우 "%1.50x", 5000으로 앞의 1은 50보다 작으므로 무시되며 소수점 아래 50글자까지 출력하고 5000을 16진수화 하여 출력해준다
-> 00000000000000000000000000000000000000000000001388 (총 50)

단, B의 출력과 같이 printf("B >%6.5x<\n", 10);처럼 앞의 6이 뒤의 5보다 큰경우처럼 보장되는 폭이 소수점 아래 O자보다 큰 경우 폭을 보장하고 나머지를 채워준다.

중요


만약 소수점 아래 자릿수를 보장하는 수 또는 (.)온점이 있는경우에는 폭을 지정하는 수 앞에 0을 추가하여 폭의 빈공간을 0으로 치환하려는 경우에 대해서 치환되지 아니하고 무시되며 폭만 보장되고 0은 소수점 아래 길이로만 채워진다

  • %06.x, %06.2x <- 모두 6의 폭만 보장되며 0은 채워지지 않고 소수점 아래 한글자와 두글자만 나타난다
    >-----a<
    >----0a<

중요


printf("E >%-6.2x<\n", 10)와 같은 경우
E >0a----<와 같은 형태로 좌로정렬, 6의 폭보장, 소수점 두자리까지 10을 16진수로 소문자 출력이 이루어진다

  • 단, printf("E >%-06.2x<\n", 10)과 같이 -플래그가 주어진경우 빈공간을 0으로 채우는 0플래그는 무시되어지므로 컴파일시 ERROR처리된다.
profile
내꿈은 숲속의잠자는공주

0개의 댓글

관련 채용 정보