#include <stdio.h>
int main() {
int decimal = 12345; // 10진수 정수
float float_num = 123.456; // 실수형
double scientific = 0.000123; // 지수형
int octal = 012345; // 8진수 정수
int hex = 0x1A3F; // 16진수 정수
unsigned int unsigned_num = 4294967295U; // 부호없는 10진수
char ch = 'A'; // 문자
char *str = "Hello, World!"; // 문자열
int *ptr = &decimal; // 포인터 주소
// 10진수 출력
printf("%%d : 10진수로 출력\n");
printf("10진수: %d\n", decimal);
// 실수형 출력
printf("\n%%f : 실수형\n");
printf("실수형: %f\n", float_num);
// 지수형 출력
printf("\n%%e : 지수형\n");
printf("지수형: %e\n", scientific);
// 8진수 출력
printf("\n%%o : 8진수로 출력\n");
printf("8진수: %o\n", octal);
// 16진수 출력
printf("\n%%x : 16진수로 출력\n");
printf("16진수: %x\n", hex);
// 부호없는 10진수 출력
printf("\n%%u : 부호없는 10진수로 출력\n");
printf("부호없는 10진수: %u\n", unsigned_num);
// 실수형 자동 출력
printf("\n%%g : 실수형으로 자동 출력\n");
printf("자동 출력: %g\n", float_num);
// 포인터 주소 출력
printf("\n%%p : 포인터의 주소를 출력\n");
printf("포인터 주소: %p\n", (void *)ptr);
// 문자 출력
printf("\n%%c : 하나의 문자로 출력\n");
printf("문자: %c\n", ch);
// 문자열 출력
printf("\n%%s : 문자열을 출력\n");
printf("문자열: %s\n", str);
return 0;
}
10진수 출력 (%d)
printf("10진수: %d\n", decimal);
decimal 변수를 10진수 형식으로 출력한다.
출력 예시: 10진수: 12345
실수형 출력 (%f)
printf("실수형: %f\n", float_num);
float_num 변수를 소수점 형태로 출력한다. 기본적으로 소수점 이하 6자리까지 표시된다.
출력 예시: 실수형: 123.456000
지수형 출력 (%e)
printf("지수형: %e\n", scientific);
scientific 변수를 지수 형태로 출력한다.
출력 예시: 지수형: 1.230000e-04
8진수 출력 (%o)
printf("8진수: %o\n", octal);
octal 변수를 8진수 형식으로 출력한다.
출력 예시: 8진수: 12345
16진수 출력 (%x)
printf("16진수: %x\n", hex);
hex 변수를 16진수 형식으로 출력한다.
출력 예시: 16진수: 1a3f
부호없는 10진수 출력 (%u)
printf("부호없는 10진수: %u\n", unsigned_num);
unsigned_num 변수를 부호없는 10진수 형식으로 출력한다.
출력 예시: 부호없는 10진수: 4294967295
실수형 자동 출력 (%g)
printf("자동 출력: %g\n", float_num);
float_num 변수를 자동으로 적절한 형식(10진수 또는 지수형)으로 출력한다.
출력 예시: 자동 출력: 123.456
포인터 주소 출력 (%p)
printf("포인터 주소: %p\n", (void *)ptr);
ptr 포인터가 가리키는 메모리 주소를 출력한다.
출력 예시: 포인터 주소: 0x7ffeefbff568
문자 출력 (%c)
printf("문자: %c\n", ch);
ch 변수를 하나의 문자로 출력한다.
출력 예시: 문자: A
문자열 출력 (%s)
printf("문자열: %s\n", str);
str 변수를 문자열로 출력한다.
출력 예시: 문자열: Hello, World!
이 예제는 다양한 변환 문자를 사용하여 데이터를 다양한 형식으로 출력하는 방법을 보여준다. 각 변환 문자가 어떻게 동작하는지 이해하면, 프로그램에서 데이터를 보다 효율적으로 출력할 수 있다.
특히 포인터 같은 경우 문자열과 함께 그 예시를 살펴보자
str = "Hello World with malloc()";
printf("x : base : $%s$ @ %p\n", str, str);
allocated = strdup(str);
printf("c : alloc : $%s$ @ %p\n", allocated, allocated);
allocated = ft_strdup(str);
printf("ft : alloc : $%s$ @ %p\n", allocated, allocated);
x : base : $Hello World with malloc()$ @ 0x555555556004c : alloc : $Hello World with malloc()$ @ 0x5555555596b0ft : alloc : $Hello World with malloc()$ @ 0x5555555596e0문자열 s와 다르게 p는 포인터의 주소를 제대로 출력했음을 확인 할 수 있다.