
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int i=1;
while(i<10) {
cout << n << " * " << i <<" = "<< n*i << "\n";
i++;
}
return 0;
}

위와같이 C++ 표준 라이브러리에 정의된 자료형은 전부 출력이 가능하다.
#include <stdio.h>
int main() {
int n;
int i = 0;
scanf("%d", &n);
for(i=1;i<10;i++) {
printf("%d", n);
printf("%s", " * ");
printf("%d", i);
printf("%s", " = ");
printf("%d\n", n*i);
}
return 0;
}
처음에 이렇게했다. 형식 지정자를 잘 사용하지 못했다.
#include <stdio.h>
int main() {
int n;
int i = 0;
scanf("%d", &n);
for(i=1;i<10;i++) {
printf("%d * %d = %d\n", n, i, n*i);
}
return 0;
}
C언어의 형식 지정자를 잘 활용하는 위의 코드가 간결하고 좋은 방법인듯하다.


printf() 또는 scanf() 사용시 데이터를 설정한 형식 지정자로 출력 또는 저장한다.
헷갈리면 무엇을 모르는지에 초점을 두면된다. 무엇을 모르는지를 형식 지정자가 대신한다.
예를들어
char c;
scanf("%o", &c); // 101 입력
printf("%d\n", c); // 출력: 65 (101(8진수) = 65(10진수))
라이브러리 버퍼에 저장된 101이라는 데이터가 10진수인지, 16진수인지, 8진수인지 2진수인지, 문자인지 뭔지 정보가 없기때문에 모른다.
얘를 형식 지정자가 대신한다.
현재 형식 지정자가 %o 이므로 101은 8진수 101 이다.
-> 10진수로 65이고, 이를 c에 저장한다.
printf("%o", 12);
12는 이미 10진수 리터럴이다.
어떤 데이터를 출력할지는 알고있지만, 얘를 어떤 형식으로 출력할지는 모른다.
10진수 12를 2진수로, 8진수로, 16진수로, 다양한 형식으로 출력할수있다.
얘를 형식 지정자가 대신한다.
현재 형식 지정자가 %o 이므로 10진수 12를 8진수로 출력한다.
-> 12=8+4 이므로 8진수로 14 이다. 즉, 14를 출력한다.