본문 바로가기

Code.D IT 강좌/C언어

[C언어] printf 함수 숫자 출력, 아스키 코드(ASCII Code)

관련 글

[C언어] printf함수의 서식문자, 주석문



C언어



printf 함수 숫자 출력

printf 출력함수를 이용하여 서식문자로 숫자를 출력해보도록 하겠습니다.

다음 예를 살펴보겠습니다.



#include <stdio.h>

intmain(void){
     //%d    10진수
     printf("%d + %d = %d\n", 3, 7, 3+7);
     printf("%d - %d = %d\n", 3, 7, 3-7);
     printf("문자열 상수: %s \n", "10+20");

     printf("10진수 %d은 16진수로 %x, 8진수로 %o\n", 30, 30, 30);

     printf("문자: %c \n", 65);
     printf("문자: %c \n", 97);

     return 0;
}



위의 코드는 아래의 사진과 같이 출력됩니다.






%d10진수를 출력하는 서식문자이기에 3+7과 3-7의 결과값을 출력했습니다. 그런데 10+20의 값은 30이 나오는 것이 아니라 10+20의 값 자체가 그대로 출력되는 모습을 보게됩니다. 이는 문자열을 표시하는 ""(큰 따옴표) 사이에 10+20의 값이 있기 때문이죠. 만약 큰 따옴표를 사용하지 않고 10+20을 사용했더라면 30의 값이 출력되는 모습을 보게 될 것입니다.



%d10진수, %x16진수, %o8진수를 나타내는 서식문자입니다. 따라서 각각 30이라는 수를 출력했을 때, 30(10진수), 1e(10진수), 36(8진수)으로 출력됩니다.



아스키 코드(ASCII Code)

특이한 점이 있습니다. 숫자 65를 입력했는데 왜 문자 A와 a가 나올까요? 이는 아스키코드와 연관이 있기 때문입니다. 컴퓨터의 CPU는 문자를 인식할 수 없으며 숫자 밖에 알지 못합니다. 따라서 컴퓨터는 문자 또한 숫자형태로 인식하는데 아스키 코드를 참조해서 숫자를 문자로 표현할 수 있게 되죠.





아스키 코드표(ASCII Code Table)

<출처: http://codedragon.tistory.com/889>



아래는 위의 표에서 제어문자(비인쇄 문자)에 대해서만 다룬 표입니다. 제어 문자 자리에는 Null을 제외하고 특수문자를 배정하여 사용합니다.



<출처: www.printf.co.kr>



아래는 다시 한번 종합적으로 정리한 아스키코드 표(ASCII Table)입니다.



<출처: 이재욱님이 만든 ASCII Table>



아스키코드도 보았으니 위의 코드와 출력화면을 다시 살펴보겠습니다. 

대문자 A의 아스키코드는 10진수: 65, 

소문자 a의 아스키코드는 10진수: 97입니다.

따라서 위의 코드에서 65와 97을 아스키코드를 통해 문자로 치환하여 나타낸 것입니다. 이처럼 같은 알파벳이라도 대문자와 소문자는 아스키 코드값이 다릅니다. 따라서 코드 상의 대문자와 소문자는 엄연히 다르다는 사실 잊지 마시기 바랍니다.