정수 상수 표현법
정수 상수는 기본적으로 아라비아 숫자 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: 문자열
'Development > C' 카테고리의 다른 글
(C언어 기초) 6. 연산자(2) (0) | 2023.08.28 |
---|---|
(C언어 기초) 5. 연산자(1) (0) | 2023.08.27 |
(C언어 기초) 4. 데이터 입력, scanf() (0) | 2023.08.26 |
(C언어 기초) 3. 변수와 데이터 입력, prinf() (0) | 2023.08.26 |
(C언어 기초) 1. C 프로그램의 구조와 데이터 출력 방법, main() (0) | 2023.08.25 |
댓글