C

자료형에 대하여!

오군_ 2023. 5. 9. 11:51
반응형
자료형은 데이터를 표현하는 방법이다

자료형은 데이터가 실수냐 정수냐

얼마나 큰 수를 저장할 것이냐 를 고려하여

프로그래머가 사용하려는 데이터에 맞는 자료형을 고르면 된다.

 

  • 컴파일러에 따라서 약간의 차이가 있다.
  • 크게 정수와 실수로 구분된다.
  • 크기에 따라서 구분된다.

 

 

 

일반적 자료형 선택

정수는 일반적으로 int가 사용됩니다.

실수는 일반적으로 double이 사용됩니다.

 

CPU가 연산하기 가장 적합한 데이터의 크기가 int형입니다.

정수형 변수에서 연산이 동반이 되면 int형으로 형 변환이 되어 연산이 됩니다.

 

double형이 float보다 더 정밀하게 표현이 가능하며

컴퓨터 환경 발전으로 부담스럽던 double형 연산이 덜 부담되게 되었습니다.

 

double형 변수의 출력(printf) 서식 문자 - %f

double형 변수의 입력(scanf) 서식 문자 - %lf

 

 

unsigned

정수 자료형의 이름 앞에 unsgined 를 붙여서 선언하면 0과 양의 정수만 표현이 가능합니다.

unsigned 키워드가 붙으면 최상위 비트(MBS)도 데이터의 크기를 표현하는데 사용이 됩니다.

따라서 음의 정수를 표현하는 데이터 범위를 양의 정수로 표현하여 양의 정수를 두 배로 표현 가능해집니다.

 

 

 

연산자 sizeof

연산자 sizeof는 피연산자의 데이터 크기를 확인할 수 있습니다.

피연산자로 변수, 상수가 와도 되고, 자료형을 직접 넣어서도 사용가능합니다.

 

sizeof는 컴파일 타임에 연산된다.

런타임은 그때 그때 즉시 연산하는것인데 이렇게 작동하는게 아니라

컴파일 타임에 연산한 것의 결과인 정보를 그대로 가져다만 쓰기에 빠르게 작동한다.

 

 

 

문자 표현방식 문자 자료형

문자를 표현하는 약속된 코드가 있습니다.

그것이 아스키코드(ASCII : American Standard Code for Information Interchange) 입니다. 

 

컴퓨터는 문자를 표현 및 저장하지 못합니다. 따라서 문자 표현을 목적으로 각 문자에 해당하는

고유한 숫자를 지정합니다. 인간이 입력하는 문자는 해당 문자의 숫자로 변환이 되어 컴퓨터가 인식하고

컴퓨터에 저장된 숫자는 문자로 변환되어 인간의 눈에 보여지게 됩니다.

 

이러한 이유로 문자형도 컴퓨터에서는 정수로 취급됩니다.

컴퓨터 입장에서 아스키코드인 문자 'A'나 숫자 65나 똑같이 취급합니다.

 

컴파일 시 각 문자는 해당 아스키 코드값으로 변환됩니다.

즉 컴퓨터에게 전달되는 정보는 숫자입니다.

 

 

char형 변수와 출력

%c : 문자를 출력하는 서식문자

 

문자를 char형 변수에 저장하는 이유

  • 모든 아스키 코드 문자는 1바이트로 표현가능
  • 덧셈, 뺄셈과 같은 연산을 하지 않는다. 단지 표현에만 사용
  • 1바이트 크기인 char형 변수가 문자 저장하기 최적의 장소
  • 다만, 문자는 int형 변수에도 저장이 가능하다.

 

 

리터럴 상수

숫자도 메모리 공간에 저장된다.

이렇게 저장되는 값은 이름이 존재하지 않으니 변경이 불가능한 상수이다.

따라서 이를 리터럴 상수라 한다.

 

 

리터럴 상수도 자료형이 결정되어야 메모리 공간에 저장될 수 있다.

  • 정수는 기본적으로 int형으로 표현
  • 실수는 기본적으로 double형으로 표현
  • 문자는 기본적으로 int형으로 표현

 

 

접미사를 이용한 다양한 상수 표현

접미사를 통해서 상수의 자료형을 변경가능

 

float num1 = 5.789; 처럼 접미사를 쓰지 않을경우 자동으로 자료형이 정해져서

데이터 손실에 대한 경고메시지가 발생합니다.

 

 

 

이름을 지니는 심볼릭(Symbolic) 상수 : const 
  • 심볼릭 상수는 초기화할때 한번만 할당 가능합니다.
  • 처음 값을 할당하면 쓰는게(변경) 안되고 읽기만 할 수 있다.
  • 상수의 이름은 모두 대문자로 표시
  • 둘 이상 단어를 연결해서 사용할 때는 언더바로 두 단어를 구분하는것이 관례

 

 

 

자료형 변환

형변환의 예시

대입 연산자의 좌항을 기준으로 형 변환이 발생!

 

자동 형 변환의 방식 정리

형 변환의 방식에 대한 유형별 정리

  • 정수 => 실수 : 오차가 발생하게 된다. 부동소수점은 근사값으로 처리가 되기에 오차발생
  • 실수 => 정수 : 소수점 이하의 값이 소멸
  • 큰 정수 => 작은 정수 : 작은 정수의 크기에 맞춰 상위 바이트 소멸

 

정수의 승격에 의한 자동 형 변환

 

 

 

피연산자의 자료형 불일치로 발생하는 자동 형 변환

두 연산자의 자료형은 일치해야 한다. 일치하지 않으면

일치하기 위해서 자동으로 형 변환이 발생

 

산술연산에서의 자동 형 변환 규칙

  • 큰 자료형 우선시
  • 실수형 우선시

=> 이는 데이터의 손실을 최소화 하기 위한 기준

 

 

 

명시적 형 변환 : 강제로 일으키는 형 변환

아래의 그림에서 num1 과 num2가 정수이기에 정수값으로 계산된 이후에

자동 형변환에 의해서 double형으로 변환하게 된다.

즉 0.00000이 나옴 그래서 계산이 되기전에 (type)을 붙여서 강제 형변환을 한다.

 

divResult = (double)num1 / num2;

위의 예시처럼 num1 이 double형으로 명시적 형 변환 그리고 num1 과 num2의 / 연산 과정에서의 산술적 자동 형 변환!

그 결과 실수형 나눗셈이 진행되어 divResult에는 0.75가 저장된다.

자동 형 변환이 발생하는 위치에 명시적 형 변환 표시를 해서 형 변환이 발생함을 알리는 것이 좋다!

 

이미지 출처 : 윤성우의 열혈 C 프로그래밍

 

반응형

 

반응형