scanf() 함수로 입력을 받고, printf() 함수로 출력을 하다보면,
종종 실수값을 출력하기 위해, %f와 %lf를 쓰곤합니다.
그런데, 매번 이 둘 중 무엇을 써야 되는가? 고민하게 되는 상황이 발생하여 정리를 해보았습니다.
변수 선언시
자료형 / 명칭 | 크기(비트) | 크기(바이트) | 값의 표현범위 | |
정수형(부호 有) |
short | 16bit | 2byte | -32,768 ~ 32,767 |
int | 32bit | 4byte | -2,147,483,648 ~ 2,147,483,647 | |
long | 32bit | 4byte | -2,147,483,648 ~ 2,147,483,647 | |
long long | 64bit | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | |
정수형(부호 無) |
unsigned short | 16bit | 2byte | 0 ~ 65,535 |
unsigned int | 32bit | 4byte | 0 ~ 4,294,967,295 | |
unsigned long | 32bit | 4byte | 0 ~ 4,294,967,295 | |
unsigned long long | 64bit | 8byte | 0 ~ 18,446,744,073,709,551,615 | |
실수형 |
float | 32bit | 4byte | |
double | 64bit | 8byte | ||
long double | 64bit | 8byte | ||
문자형(부호 有) | char | 8bit | 1byte | -128 ~ 127 |
문자형(부호 無) | unsigned char | 8bit | 1byte | 0 ~ 255 |
입/출력시
형식 지정자 | 의미 | 예 |
%d | 정수를 10진수로 입력한다. (양수, 음수) | scanf("%d", &i); |
%f | float 형의 실수로 입력한다. | scanf("%f", &i); |
%lf (lf = long float의 줄임말) | double 형의 실수로 입력한다. | scanf("%lf", &i); |
%c | 문자 형태로 입력한다. | scanf("%c", &i); |
%s | 문자열 형태로 입력한다. | scanf("%s", &i); |
%o | 정수를 8진수로 입력한다. (양수) | scanf("%o", &i); |
%x | 정수를 16진수로 입력한다. (양수) | scanf("%x", &i); |
%u | 정수를 부호없는 10진수로 입력한다. (양수) | scanf("%u", &i); |
지수 표기법
실수 | 지수 표기법 | 의미 |
123.45 | 1.2345e2 | |
12345.0 | 1.2345e4 | |
0.000023 | 2.3e-5 | |
2,000,000,000 | 2.0e9 |
출력 자릿수 표기법
printf("%3d", num); // 2자리이하의 수 일지라도 공백으로 3자리까지 출력하라.
printf("%.2f",num; // 소수점 아래 둘째자리까지 출력하라.
printf("%5.3f", num); // 정수는 5자리, 소수점 아래는 셋째자리까지 출력하라.
위 내용을 모두 이해했을 때 실전에서 우리가 주의해야 될 사항
※값을 scanf()로 입력받을 때
float형에 저장할 것이라면 %f로 받고,
double형에 저장할 것이라면 %lf로 받아야 한다.
※값을 printf()로 출력할 때
float형이나 double형이나 C95 버전까지는 %f로 출력해도 상관없었다.
C99 버전에 와서는 입력값을 나눠받는 것처럼 출력값도 나눠서 출력하겠다?! 라는 일관성 명목으로 %lf가 추가되서 double형은 %lf로도 출력이 가능해졌다.
결론, %f로 출력해도 float형이나 double형 모두 이상없이 출력이 가능하다는 것!
수업만 듣다가 막상 이렇게 정리하고 나니 깔끔하게 머리에 안착하는 느낌이네요.
그럼 오늘도 즐거운 코딩!!
반응형
'코딩 | 개념 정리 > C' 카테고리의 다른 글
[C언어] 주사위를 던져 각각의 면의 등장 횟수 구하기 (0) | 2021.04.17 |
---|---|
[C언어] 각 연산의 횟수를 기억하는 계산기 (0) | 2021.04.17 |
[C언어] 함수를 활용해 소득세 계산하기 2 (0) | 2021.04.14 |
[C언어] 함수를 활용한 계산기 만들기 (0) | 2021.04.14 |
[C언어] 함수를 활용해 두 개의 부동 소수점 일치 판별하기 (0) | 2021.04.13 |