10진수 정수
10진수 양의 정수
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처리된다.