본문 바로가기
컴퓨터일반

C, C++ printf(), scanf() 특수 문자

by __observer__ 2011. 9. 24.
반응형

C, C++ 코딩시 printf(), scanf() 함수는 숫자 또는 문자를 표현하기 위하여 몇 가지 특수 문자를 제공한다.

 

매번 쓰는 것들이라 그냥 넘어가기 쉽지만, 가끔은 완전 잊어 버리게 되는 경우도 있어서 여기 정리한다.

 

특수 문자

내용

c

문자 출력

d

10진수 정수 출력

o

8 진수 출력

u

unsigned 출력

x

16진수 소문자 출력

X

16진수 대문자 출력

e

exponential 숫자 출력, e 를 소문자로

E

exponential 숫자 출력, E를 대문자로

f

floating number 출력

s

문자열 출력

 




 

위에서 몇 가지 문자들을 이용하여 -10 을 표현해 보자.

 

 

 

위 코드의 실행 결과는 다음과 같다.

 

 

 
 

-10을 %d 로 표현한 경우는 정상적으로 -10 이 표현되는 것을 확인 할 수 있다.

 

Unsigned, 8 진수, 16진수로 표현했을 경우는 어떻게 저런 결과가 나오는지 확인 해 보자.

  




 

C 코딩 시 integer 는 4바이트 즉 32 비트 숫자로 표현하며 2의 보수 체계를 이용한다.

 

-10을 2의 보수로 표현 할 때는 다음과 같은 과정을 거친다.

 

  1. 일단 10을 2진수로 표현하자

 

그럼 당연히

 

00000000000000000000000000001010

 

로 표현 될 것이다.

 

  1. 위 결과에 대해 1의 보수를 취하면

 

11111111111111111111111111110101

 

로 표현된다.

 

  1. 위 결과에 +1을 한다.

 

111111111111111111111111111110110

 

그럼 위와 같은 값이 된다. 위 결과가 바로 -10을 2의 보수로 표현한 결과이다.

  




 

111111111111111111111111111110110 을 그대로 숫자로 표현하면 unsigned 값인 4294967286 이 되는 것이며

 

111111111111111111111111111110110 뒤에서부터 3개씩 끊어서 8진수로 표현하면 37777777766 이 되고

 

111111111111111111111111111110110 뒤에서부터 4개씩 끊어서 16진수로 표현하면 fffffff6 이 된다.


반응형

댓글