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


+ Recent posts