Chapter 2 - 상수와 데이터 출력
- 상수와 데이터 표현 방법
- 상수
- 값이 정해져 있고, 변하면 안 되는 경우에 사용하는 데이터의 형태
1. 정수 상수 표현법
- 기본적으로 아라비아 숫자 0 ~ 9, +, -, 기호를 사용
- 10진수, 8진수, 16진수로 표현할 수 있음
- 8진수는 숫자 0, 16진수는 0x를 앞에 붙여서 구분
- ex) 10진수 숫자 12는 8진수 - 014, 16진수 0xc로 표현
#include <stdio.h>
int main(void)
{
printf("%d\n", 12); //10진수 정수 상수
printf("%d\n", 014); //8진수 정수 상수
printf("%d\n", 0xc); //16진수 정수 상수
return 0;
}
2. 실수 상수 표현
- 실수는 소수점 형태와 지수 형태로 표현 가능
- 소수점 형태로 표현할 때 실수는 아라비아 숫자 0~9, +, - 기호와 소수점을 사용
- 이공계열에서 다루는 크고 작은 숫자는 지수 형태로 표시
- 지수 형태 표현
- 지수 형태를 지수 값을 크기에 따라 다양한 형태로 표현 가능, 그 중 소수점 앞에 0이 아닌 유효 숫자 한 자리를 시용해 지수 형태로 바꾼 것을 정규화 표기법이라고 함.
#include <stdio.h>
int main(void)
{
printf("%.1lf\n", 1e6); //지수 형태의 실수를 소수점 형태로 출력
printf("%.7lf\n", 3.14e-5); //소수점 이하 일곱째 자리까지 출력
printf("%le\n", 0.0000314); //소수점 형태의 실수를 지수 형태로 출력
printf("%.2le\n",0.0000314); //지수 형태로 소수점 이하 둘째 자리까지 출력
return 0;
}
- printf() 함수는 기본적으로 소수점 형태로 표현함. 지수 형태 표현 시 '%le' 변환 문자 사용
3. 문자와 문자열 상수 표현법
- 문자와 문자열은 따옴표의 종류로 구분
- 문자는 작은 따옴표(' '), 문자열은 큰 따옴표(" ")
#include <stdio.h>
int main(void)
{
printf("%c\n", 'A'); //문자 상수 출력
printf("%s\n", "A"); //문자열 상수 출력
printf("%c은 %s입니다.\n", '1', "first"); //문자(%c)와 문자열(%s)을 함께 출력
return 0;
}
- 7행에서 '1'은 문자, "first"는 문자열 상수, 6행에서 "A"와 같이 하나의 문자라도 큰 따옴표가 붙으면 문자열 상수
- 변환문자
- 문자 - %c
- 문자열 - %s (보통 변환문자 없이 사용)
4. 상수가 컴파일 된 후의 비트 형태
- 컴퓨터는 모든 데이터를 비트(bit)로 변환 -> 1, 0 두 개의 값을 가짐
- 8비트는 1바이트(byte) - 2의 8승은 256 -> 1바이트의 값은 256가지
- 데이터의 크기가 커지면 프로그램 내 사용 가능한 값도 커짐. but 데이터의 크기가 커지면 메모리와 연산에 부담을 줌
- 정수 상수와 실수 상수의 컴파일
- 정수 상수는 4바이트, 실수 상수는 8바이트로 표현
- 10과 10.0을 컴퓨터는 다르게 인식하기에 어떤 상수를 쓰느냐에 따라 속도와 정확도 차이가 생김
- 정수가 가장 빠르고 정확하게 연산될 수 있는 형태
- 문자 상수의 컴파일
- 문자 상수는 소스코드에서 문자임을 표현하는 방법이며 컴퓨터 안에서는 정수와 같은 방식으로 처리됨
5. 정수 상수가 컴파일된 후의 비트 형태
- 정수는 0을 포함한 양수와 음수로 나뉨
- 양수의 변환
- 1바이트로 표현 가능한 최댓값은 255
- 4바이트(32비트)로 표현 가능한 정수의 최댓값보다 더 큰 상수를 사용하면 컴파일러는 자동으로 데이터 크기를 8바이트로 늘려서 처리함.
- 값의 크기와 상관없이 8바이트로 만들 때는 정수에 접미사 LL사용
13 //4바이트 크기로 처리
13LL //8바이트 크기로 처리
- 음수의 변환
- 음수는 절댓값을 2의 보수로 바꾸어 처리
'C언어 > Study' 카테고리의 다른 글
[C언어 공부] 실수 자료형 (0) | 2024.07.09 |
---|---|
[C언어 공부] 정수 자료형 (0) | 2024.07.09 |
[C언어 공부] 변수 (0) | 2024.07.09 |
[C언어 공부] Chapter 2-1 (0) | 2024.06.24 |
[C언어 공부] Chapter 1 (0) | 2024.06.19 |