본문 바로가기
Development/C

(C언어 기초) 2. 상수와 데이터 표현 방법

by eoieiie 2023. 8. 25.

정수 상수 표현법


정수 상수는 기본적으로 아라비아 숫자 0~9,  +, - 기호를 사용합니다. 그리고 이를 네 가지 진법, 즉 10진수, 8진수, 2진수, 16진수로 표현할 수 있습니다. 0~14까지의 수를 다음과 같이 네 진법으로 나타내보겠습니다. 

 

10진수 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
8진수 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16
2진수 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110
16진수 0 1 2 3 4 5 6 7 8 9 A B C D E

 

  • 10진수 : 0~9까지 10개의 숫자 사용
  • 8진수 : 0~7까지 8개의 숫자 사용
  • 2진수 : 0과 1
  • 16진수 : 0~9까지 10개의 숫자와 A~F까지  6개의 영문자 사용

그런데 6, 11과 같은 표기는 10진수인지 8진수인지 구분이 안 됩니다. 밑수라는 개념이 존재하지만, 프로그래밍 언어에서는 밑수를 표기할 수 없기에 다음과 같이 진수를 구분합니다.

 

  • 10진수 : 12
  • 8진수 : 014(숫자 앞에 0을 붙인다.)
  • 16진수 : 0xc(숫자 앞에 0x를 붙인다.)

이렇듯 하나의 정수는 모두 세 가지 진법으로 다양하게 표현할 수 있습니다. 앞에서 본 표를 C언어에서의 표기법으로 나타내면 다음과 같습니다.

 

10진수 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
8진수 00 01 02 03 04 05 06 07 010 011 012 013 014 015 016
16진수 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xA 0xB 0xC 0xD 0xE

 

실수 상수 표현법


실수 역시 아라비아 숫자 0~9, +. - 기호와 소수점을 사용하여 표현합니다. 다음과 같이 말이죠. 

3.4
-1.5
+10.0
.5
-10.

 

그렇지만 우리가 다룰 크고 작은 숫자들은 지수 표기법으로 표기합니다. 0.0000314를 지수 형태로 바꿔보겠습니다. 

e는 밑수 10을 기본값으로 가지며, 대문자로 쓸 수도 있습니다. 

 

0.0000314 = 3.14e-5
0.314E-4
31.4e-6

 

위 예시와 같이 지수 형태는 지수 값의 크기에 따라 무수히 많은 방법으로 표현이 가능합니다. 그중 소수점 앞에 0 이 아닌 유효 숫자 한 자리를 사용하여 지수 형태로 바꾼 것을 정규화(normalization) 표기법이라고 합니다. printf 함수가 실수를 지수 형태로 출력할 때는 기본적으로 정규화 표기법을 사용합니다. 이제 코드로 살펴보겠습니다. 

 

#include <stdio.h>

int main(void)
{
    printf("%.1lf\n",1e6);  // 지수 형태의 실수(1000000.0)를 소수점 형태로 출력 
    printf("%.7lf\n",3.14e-5); // 0.0000314를 소수점 이하 7자리까지 출력
    printf("%le\n",0.0000314); // 소숫점 형태의 실수를 지수 형태로 출력
    printf("%.2le\n",0.0000314); // 소숫점 이하 둘째 자리까지 지수 형태로 출력
    
    return 0;
}


//실행결과

1000000.0
0.0000314
3.140000e-05
3.14e-05

 

실행결과에서 알 수 있듯이 출력 값을 지수 형태로 사용해도 printf 함수는 기본적으로 소수점 형태로 출력합니다. 지수 형태로 출력하려면 %le 변환 문자를 사용하고, 소수점 이하 자릿수를 지정하려면 % 와 le 사이에 점을 찍고 원하는 숫자를 함께 사용합니다.  

 

문자와 문자열 상수 표현법


이번에는 문자와 문자열 상수를 표현해보겠습니다. 이 둘의 차이는 간단합니다. 문자는 작은따옴표로 묶고, 문자열은 큰따옴표로 묶습니다. 묶인 문자열을 출력할 때는 %s를, 문자를 출력할 때는 %c 변환 문자를 사용합니다. 코드를 통해 사용법을 알아보죠. 

 

#inclulde <stdio.h>

int main(void)
{
    printf("%c\n", 'A');				//문자 상수 출력
    printf("%s\n", "A");				//문자열 상수 출력
    printf("%c는 %s 입니다.\n", '1', "first");		//문자(%c)와 문자열(%s)을 함께 출력
    
    return 0;
}

 

%d: 10진수(정수형)

%f: 실수형

%e: 지수형

%o: 8진수

%x: 16진수

%u: 부호없는 10진수

%g: 실수형 자동출력

%p: 포인터의 주소

%c: 하나의 문자로 출력

%s: 문자열

 

댓글