이번 강좌는 printf 서식 문자의 여러 사용법을 알아볼 것이다.
(1) 소수점 지정하기
#include <stdio.h>
int main() {
double a = 3.14;
printf("%lf\n", a);
}
원래는 이렇게 소수점을 출력했다.
그런데 이렇게만 출력하면 아래와 같은 일이 발생한다.
더 깔끔하게 셋째 자리까지만 출력하려면
서식 문자를 이렇게 쓰면 된다
%.3lf
%와 lf 사이에 .(소수점자릿수) 를 적으면 해당 자릿수까지만 반올림되어 출력된다.(float을 출력할 땐 f...)
3을 썼더니 반올림되어 3.142가 출력됐다.
물론 더 긴 자릿수까지 출력할 수도 있다.
(2) 접두사 붙이기
우리가 주로 사용하는 진법체계는 0~9를 사용하는 10진법이다.
그런데 C언어에서는 2진법, 8진법, 16진법을 사용할 수도 있다.
#include <stdio.h>
int main() {
int a = 10;
int b = 0x10;
int c = 010;
int d = 0b1010;
printf("a : %d, b : %d, c : %d, d : %d\n", a, b, c, d);
}
각 진법에 맞는 접두사를 적어줘야 하는데
10진법은 늘 해왔던대로인 아무것도 없는 것,
8진법은 0
16진법은 0x
2진법은 0b이다.
int a, b, c, d에 각각 진법을 다르게 하여 값을 대입해보았다.
%d는 10진법 정수를 출력하는 서식 문자이므로 b, c, d가 10진법으로 변환되어 출력됐다.
8진법과 16진법은 각각 %o와 %x로 출력할 수 있는데, 이때 %와 문자 사이에 #을 쓰면 '접두사'를 붙일 수 있다.
#include <stdio.h>
int main() {
int b = 0x10;
int c = 010;
printf("b : %x, c : %o\n", b, c);//접두사 없이 출력하기
printf("b : %#x, c : %#o\n", b, c);//접두사와 함께 출력하기
}
아쉽게도 2진법은 C언어에서 지원하는 서식 문자가 없다..
그래서 직접 2진법으로 출력해주는 코드를 작성해야 한다.
10진법을 2진법으로 변환할 때는 2로 나눈 나머지를 이용하곤 하는데
단순 출력에는 조금 더 간단한 비트 연산을 써도 된다.
그러나 이는 어쨌든 아직 강좌를 쓰지 않은 제어문을 사용하므로 나중에 포스팅하겠다.
(3) 여백
가끔 어떤 코드들을 보면 이러한 코드를 볼 수 있다.
가독성을 위해 Tab으로 열을 맞춰주는 것이다.
아래 주석과 비교해보면 확연한 차이가 보일 것이다.
이런 걸 콘솔창에서도 적용할 수 있다.
숫자 하나는 두 자릿수, 하나는 세 자릿수, 하나는 다섯 자릿수인데 최소 너비를 8로 설정해주면
모자란 공간은 공백으로 채워진다. 백문이불여일견..
#include <stdio.h>
int main() {
int age = 17;
int foot = 260;
int balance = 10823;
printf("%8d\n", age);
printf("%8d\n", foot);
printf("%8d\n", balance);
printf("--------\n");
printf("12345678\n");
}
17은 6칸, 260은 5칸, 10823은 3칸이 밀려난 상태로 출력이 된 걸 볼 수 있다.
또 앞에 숫자 앞에 0을 붙여주면,
#include <stdio.h>
int main() {
int age = 17;
int foot = 260;
int balance = 10823;
printf("%08d\n", age);
printf("%08d\n", foot);
printf("%08d\n", balance);
//%8d -> %08d
printf("--------\n");
printf("12345678\n");
}
이렇게 여백이 0으로 채워지는 걸 볼 수 있다.
다음 강좌에서는 제어문에 대해 알아볼 것이다.
'Programming > C & C++' 카테고리의 다른 글
[C/C++] 9.1강 - 제어문에서 논리 연산자 사용하기 (if의 사용법) (0) | 2021.07.20 |
---|---|
[C/C++] 9강 - 제어문, 조건 관리하기 (if의 사용법) (0) | 2021.07.11 |
[C/C++] 문자의 ASCII 번호 출력하는 프로그램 만들기 (0) | 2021.06.27 |
[C/C++] 7.1강 - 상수, C언어에서 상수 사용하기 (2) (enum, 열거형) (0) | 2021.06.25 |
[C/C++] 7강 - 상수, C언어에서 상수 사용하기 (1) (const,#define) (2) | 2021.06.20 |