본문 바로가기

C

5장 . 상수와 기본 자료형

[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