long long 형식의 변수를 printf문을 이용하여 %d로 출력을 하면 이상한 값이 출력된다.
long long 형식의 변수는 %u %lld , %lli , %llo , %llu , %llx를 이용하여 출력을하면 제대로 된 값을 얻을 수 있다.
%u : long long을 +- 부호 없는 정수로 출력하고 싶을 때
%lld : signed long long 변수를 출력할 때 사용
%lli : long long 변수를 10진수로 출력함
%llo : long long 변수를 8진수로 출력함
%llu : unsigned long long 변수를 출력할 때 사용
%llx : long long 변수를 16진수로 출력함
[참고] printf와 scanf의 서식문자 정리
- printf 서식문자
서식문자 | 출력 대상(자료형) | 출력 형태 |
%d | int | 부호 있는 10진수 정수 |
%u | unsigned int | 부호 없는 10진수 정수 |
%o | unsigned int | 부호 없는 8진수 정수 |
%x, %X | unsigned int | 부호 없는 16진수 정수 |
%f | float, double | 10진수 방식의 부동소수점 실수 |
%e, %E | float, double | e 또는 E 방식의 부동소수점 실수 |
%g, %G | float, double | 값에 따라 %f와 %e 사이에서 선택 |
%c | char | 값에 대응하는 문자 |
%s | char * | 문자열 |
%p | void * | 포인터의 주소 값 |
%n | int * | 포인터의 주소 값 |
printf(“%#7.5hd”);
A B C D
A : 출력의형태에조절을가하기위한특별한표시문자(#)
−: 좌측정렬
0 : 빈공갂을0으로채우기
+ : 출력할수의크기가0보다클때, + 기호붙여주기
공백: 출력할수의크기가0보다클때수의앞에빈칸하나출력
# : 8진수, 16진수출력시 각각0과0x를, 실수의경우소수점이하0 출력
B : 출력에사용되는최소한의폭(7)
C : 정밀도(5)
D : 출력데이터의크기정보변경(h)
%ld long
%lld long long
%Lf long double
- scanf 서식문자
서식문자 | 입력대상(자료형) | 입력 형태 |
%d | int | 부호 있는 10진수 정수 |
%i | int | 부호 있는 10진수 정수 |
%u | unsigned int | 부호 없는 10진수 정수 |
%o | unsigned int | 부호 없는 8진수 정수 |
%x | unsigned int | 부호 없는 16진수 정수 |
%c | char | 문자 |
%s | char * | 문자열 |
%p | void * | 주소 값 |
%f %e %g | float | 부호 있는 실수 |
%d %hd %hhd | int short char | %d %ld %lld | int long long long | %f %lf %Lf | float double long double |