🔖 INDEX
주요 서식 지정자들에 대한 설명
1. %d 또는 %i: 정수(int) 값을 출력하거나 입력받을 때 사용합니다.
int num = 123;
printf("%d\n", num);
scanf("%d", &num);
2. %u: 부호 없는 정수(unsigned int) 값을 출력하거나 입력받을 때 사용합니다.
3. %f: 부동 소수점(float) 값을 출력합니다.
float num = 123.456;
printf("%f\n", num);
4. %lf: double 타입의 부동 소수점 값을 출력하거나 입력받을 때 사용합니다.
double num = 123.456;
printf("%lf\n", num);
scanf("%lf", &num);
5. %c: 단일 문자(char)를 출력하거나 입력받을 때 사용합니다.
char ch = 'A';
printf("%c\n", ch);
scanf("%c", &ch);
6. %s: 문자열(char 배열 또는 문자 포인터)을 출력하거나 입력받을 때 사용합니다.
char str[] = "Hello, World!";
printf("%s\n", str);
scanf("%s", str);
7. %p: 포인터 주소를 출력할 때 사용합니다.
8. %o: 8진수(octal)로 정수를 출력합니다.
9. %x 또는 %X: 16진수(hexadecimal)로 정수를 출력합니다. %x는 소문자로, %X는 대문자로 출력합니다.
10. %lld: long long int 타입의 정수 값을 출력하거나 입력받을 때 사용합니다.
11. %llu: unsigned long long int 값을 출력하거나 입력받을 때 사용합니다.
12. %%: % 문자 자체를 출력할 때 사용합니다.
다양한 서식 지정자 플래그와 설정
너비
- 너비는 출력할 항목의 최소 문자 수를 지정합니다.
- 지정한 너비보다 출력할 항목이 작을 경우, 나머지는 공백으로 채워집니다.
- 오른쪽 정렬로 기본적으로 출력되지만, - 플래그를 사용하면 왼쪽 정렬로 출력됩니다.
예제:
int num = 75;
printf("%5d\n", num); // " 75"
printf("%-5d\n", num); // "75 "
0 플래그를 사용하면, 빈칸을 공백이 아닌 0으로 채울 수 있습니다.
printf("%05d\n", num); // "00075"
정밀도
정밀도는 . 뒤에 숫자로 지정됩니다. 정밀도가 사용되는 경우는 대체로 다음과 같습니다:
1. 정수: 정밀도는 출력할 최소 자릿수를 지정합니다. 지정된 자릿수보다 작을 경우, 앞쪽은 0으로 채워집니다.
printf("%.5d\n", num); // "00075"
2. 부동 소수점: 정밀도는 소수점 이하의 자릿수를 지정합니다.
double val = 3.141592;
printf("%.2f\n", val); // "3.14"
3. 문자열: 정밀도는 출력될 최대 문자 수를 지정합니다.
char str[] = "Hello, World!";
printf("%.5s\n", str); // "Hello"
4. 너비와 정밀도를 함께 사용할 수도 있습니다.
printf("%10.2f\n", val); // " 3.14"
5. 추가적으로, 너비나 정밀도를 *로 지정하면, 해당 값을 인수로 전달받아 동적으로 지정할 수 있습니다.
printf("%*.*f\n", 10, 2, val); // " 3.14"
이처럼 서식 지정자의 너비와 정밀도를 활용하면 출력되는 데이터의 형태를 세밀하게 제어할 수 있습니다.
길이지정자
길이 지정자는 해당 변수의 크기나 타입에 따라 출력 또는 입력 형식을 조절합니다.
1. h : short int 또는 unsigned short int를 지정합니다.
short int num = 12345;
printf("%hd", num);
2. hh : signed char 또는 unsigned char를 지정합니다.
3. l : long int 또는 unsigned long int, 또는 wchar_t 문자 또는 문자열을 지정합니다.
long int lnum = 123456789L;
printf("%ld", lnum);
4. ll : long long int 또는 unsigned long long int를 지정합니다.
5. j : intmax_t 또는 uintmax_t를 지정합니다.
6. z : size_t를 지정합니다.
7. t : ptrdiff_t를 지정합니다.
8. L : long double를 지정합니다.
플래그
1. - : 왼쪽 정렬. 지정한 너비 내에서 값을 왼쪽으로 정렬합니다.
printf("%-10d", 123); // "123 "
2. + : 부호 표시. 양수일 때도 부호를 출력합니다.
printf("%+d", 123); // "+123"
3. (공백): 양수일 때 공백, 음수일 때 - 부호를 출력합니다. (즉, 양수 앞에 공백 한 칸이 추가됩니다.)
printf("% d", 123); // " 123"
4. # : 대체 형식.
- 8진수 앞에 0을 추가하거나,
- 16진수 앞에 0x 또는 0X를 추가하거나,
- 실수에서 소수점이 없어도 소수점을 출력합니다.
printf("%#o", 123); // "0173"
printf("%#x", 123); // "0x7b"
printf("%#f", 123.0); // "123.000000"
5. 0 : 패딩. 지정한 너비 내에서 빈 공간을 0으로 채웁니다.
printf("%010d", 123); // "0000000123"
이러한 플래그와 길이 지정자를 조합하여 서식 지정자를 세밀하게 제어할 수 있습니다.
'프로그래밍 > C++' 카테고리의 다른 글
C++의 메모리 관리 : 동적 할당, 스마트 포인터 (0) | 2023.09.29 |
---|---|
C++ 함수 포인터 (Function Pointer) (0) | 2023.09.29 |
C++ 소수점 처리방법 : floor, ceil, round (0) | 2023.07.21 |
C++11 주요 업데이트 : 자동 형변환(Auto Type Deduction) 깊게 알아보기 (0) | 2023.06.27 |
C++에서 std::map의 항목 지우는 방법 알아보기 (0) | 2023.06.19 |
댓글