[c가 제공하는 기본 자료형]
자료형
:선언할 변수의 특징을 나타내기 위한 키워드 ( 정수라면 데이터의 크기 / 실수라면 정확도 )
- 기본 자료형 - 기본적으로 제공되는 자료형
- 사용자 정의 자료형 - 구조체 / 공용체
기본자료형의 종료와 데이터 표현 범위
정수형
- char / 1바이트 / -128~ 128 표현
- short / 2바이트 / -32768 ~ 32767 표현
- int / 4 바이트 / -2147483648 ~ 2147483648 표현
- long / 4바이트 / -2147483648 ~ 2147483648 표현
실수형
- float / 4바이트 / 3.4 * 10-37 ~ 3.4*10+38 표현
- double / 8바이트 / 1.7 * 10-307 ~ 1.7 *10+308 표현
- long double / 8바이트 혹은 그 이상 / 차이를 많이 보임
Unsigned
:MSB까지 데이터의 크기를 표현하는데 사용 (양의 정수 ) 하며 , 실수형 자료형은 사용 불가하다.
다양한 자료형이 제공되는 이유
- 데이터의 표현 방식 (정수,실수)이 다르기 때문
- 메모리 공간을 적절하게 사용하기 위해서 (작은 메모리 공간 큰 데이터를 저장한다면 데이터 손실 가능성 있음)
SizeOf
:피 연산자의 메모리 크기를 반환한다.
피연산자로 자료형의 이름이 올 경우 괄호를 사용.그 외외는 선택적
자료형 선택의 기준
정수형 데이터
- 컴퓨터는 내부적으로 int 연산을 가장 빠르게 처리하기에 정수형은 int로 선언
- 범위가 int를 넘어간다면 long 선언
- 데이터가 작아야 하는 작업은 작게 선언하는게 좋다.
실수형 데이터
- 선택의 지표는 정밀도 (오차없이 표현 가능한 정도)
- 일반적인 선택은 double
ASCII 코드
ASCII 코드
미국 표준 협회 (ANSI)에 의해 정의
컴퓨터를 통해 문자를 표현하기 위한 표준 (컴퓨터는 문자를 표현하지 못한다)
문자와 숫자의 연결관계를 정의 ex)A는 65 , B는 66 ..
ASCII 코드 범위
char 형 ( 0이상 127 이하)으로 처리하는 것이 합리적이다.
문자의 표현
' (따옴표)를 이용하여 표현
[상수에 대한 이해]
리터럴 상수
:이름을 지니지 않는 상수 . 코드블럭이 끝나는 순간 메모리에서 해제된다.
상수 역시 메모리 공간에 저장되기 위해 자료형이 결정된다.
접미사에 따른 상수 표현
- u or U / Unsigned int / 304U
- l or L / long / 304L
- ul or UL / unsigned long / 304 UL
- f or F / float / 3.1f
- l or L / long double / 304.5 L
심볼릭 상수
:이름을 지닌 상수 . const 키워드를 통해 정리한다 . 보통 대문자 사용
[자료형 변환 이해]
자동 형변환
자동적으로 발생하는 형태의 변환이다.묵시적 형 변환이라고 표현한다.
- 대입 연산시 발생
int main(void)
{
int n=3.14; //소수부의 손실 - 3
double d=3; //값의 표현이 넓은 범위로의 변환 (메모리 낭비) - 3.000000
char c=129; //상위 비트의 손실 - 127
}
- 정수의 승격에(cpu가 처리하기 가장 적합한 int로 변경) 의해 (int 연산이 빠른 이유) / 정수형 연산 자체를 단일화 시킨 결과 ex) short형간의 연산은 두변의 형 변환이 일어난다
int main(void)
{
short a=3;
short b=2;
short c = a+b; //해당 과정에서 2번의 형 변환이 발생한다
}
- 산술 과정에 의해 : 손실이 적은 쪽으로 형 변환
int main(void)
{
double a= 5.5 +7; //5는 double로 자동 형 변환
}
산술 연산 형 변환 규칙
데이터 손실이 최소화 되는 방향으로 진행
char - int -long(8) -float (4) -double - long double
강제 형변환
프로그래머가 명시적으로 형 변환을 요청하는 형태의 변환이다.명시적 형 변환이라고 표현한다.
int main(void)
{
dounle a= (double)3+3.5;
}
'C' 카테고리의 다른 글
7장 . 다양한 형태의 반복문 (0) | 2023.01.02 |
---|---|
6장 . Printf 와 Scanf에 대한 고찰 (1) | 2023.01.01 |
4장 . 데이터 표현 방식의 이해 (0) | 2023.01.01 |
3장 . 변수와 연산자 (0) | 2023.01.01 |
2장 . 프로그램의 기본 구성 (0) | 2023.01.01 |