개발하는 기획자

반응형

1. 프로그램 자료형


프로그래밍에서 자료형은 데이터 타입(Date Type) 개념으로 프로그램에서 데이터를 식별하는 식별자의 역할을 담당한다. 우리가 숫자를 쓰거나 문자를 쓸때, 상수, 정수, 소수, 한글 등 다양하게 구분이 가능하듯이 프로그래밍에서도 컴퓨터가 내가 사용하는 변수(데이터)가 어떤 종류인지에 대한 인식을 위해 자료형을 선언해줘야되는 필요가 있다.

 

아두이노는 기본적으로 C언어와 C++언어에서 사용하는 자료형과 동일한 선언을 통해 사용되고 있다.

 

기본적으로 논리형, 정수형, 실수형 또는 문자형 등으로 크게 나눌 수 있다.

 

 

 

 

2. 자료형의 구분


1) 논리 자료형 : boolean

2) 정수 자료형 : byte, int, word, short, long, unsigned int, unsigned long

3) 실수 자료형 : float, double

4) 문자 자료형 : char

자료형 크기(Byte) 구분 표현 값
boolean 1 논리 자료형 true or false
byte 1 정수 자료형 0 ~ 255
int 2 -32,768 ~ 32,767
word 2 0 ~ 65,535
short 2 -32,768 ~ 32,767
long 4 -2,147,483,648 ~ 2,147,483,647
unsigned int 2 0 ~ 65,535
unsigned long 4 0 ~ 4,294,967,295
float 4 실수 자료형 3.4028235E+38 ~ -3.4028235E+38
double 4 3.4028235E+38 ~ -3.4028235E+38
char 1 문자 자료형 -128 ~ 127

다음 표와 같이 구분할 수 있고 각 자료형 변수가 가지는 표현 가능한 숫자의 범위는 다음과 같다.

 

여기서 unsigned 가 붙은 자료형은 정수를 표현하지만 부호가 없는 즉 +의 범위를 나타내는 자료형인 것을 확인할 수 있다. int와 unsigned int, long과 unsigned long 자료형을 살펴보면 모두 정수를 나타내는 자료형으로 표현 가능한 수는 동일한 것을 볼 수 있다.  

 

int : -32,768 ~ 32,767 -> 65,536 개 

unsigned int : 0 ~ 65,535 -> 65,536 개

 

long : -2,147,483,648 ~ 2,147,483,647 -> 4,294,967,296 개

unsigned long : 0 ~ 4,294,967,295 -> 4,294,967,296 개

 

word 자료형의 경우 unsigned int와 동일한 범위를 가지고 있으며, float과 double 자료형도 동일한 수의 범위까지 표현이 가능하다.

 

 

 

3. 변수 선언


예를 들어 정수 자료형 변수를 선언하기 위한 문법은 다음과 같다.

Ex) int 자료형 변수의 선언

int val = 10;

 

 

우선적으로 제일 앞의 'int' 는 변수의 타입을 나타내는 지정된 자료형이며,

변수명 'val'(여기서 val은 사용자가 입력하는 부분으로 임의로 변경해도 관계없다.)은 int 변수에 대한 이름을 나타낸다.

그리고 등호 뒤에 10이란 변수는 'val' 이라는 변수에 할당할 값을 나타내는 부분이다. 

 

모든 변수 선언은 다음 문법의 형태로 동일하게 선언이 가능하다.

 

 

 

 

4. 변수 선언 시 주의할 점


기본적으로 변수는 위의 표와 같이 각각 본인이 담을 수 있는 표현값의 범위가 한정되어 있다. 그렇다면 변수가 해당 자료형의 표현범위를 벗어나는 값을 가졌을 때는 어떻게 될까?

 

다음의 간단한 예제를 통해서 확인할 수 있다.

 

[예시코드]

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  int a = 32768;
  Serial.println(a);
}

다음 코드를 입력하게 되면 시리얼 모니터를 통해 선언된 a 변수의 값을 반복해서 확인할 수 있는 간단한 코드로, 시리얼 통신을 사용하는 방법은 추후에 자세히 함수와 변수를 설명하는 포스팅이 예정되어 있습니다.

 

아두이노 통합개발환경에서 우측 상단의 돋보기 버튼을 누르면 시리얼 모니터 창을 생성할 수 있다.

위의 int 형은 -32,768 ~ 32,767의 표현 범위를 가지게 되는데,

사용자가 32,768의 값을 int형 변수에 선언하게 된다면 값이 -32,768로 처음 변수를 선언할 때 입력한 값과 다르게 표시되는것을 확인할 수 있다. 

 

그래서 선언된 자료형 변수가 가진 표현의 범위를 넘는 경우를 '오버플로우 현상'이라고 한다.

 

그렇다면 반대의 경우는 어떻게 될까?

 

[예시 코드]

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  int a = -32769;
  Serial.println(a);
}

다음 코드를 입력한 뒤 동일하게 시리얼 모니터를 확인을 하게되면,

아두이노 통합개발환경에서 우측 상단의 돋보기 버튼을 누르면 시리얼 모니터 창을 생성할 수 있다.

다음 코드 역시 위 오버플로우 현상과 유사하게 사용자가 -32,769의 값으로 선언된 값이 32,767로 처음 변수를 선언할 때 입력한 값과 다르게 표시되는것을 확인할 수 있다. 

 

자료형 표현 범위 최소값 아래의 값을 선언했을 때 값이 변하는 부분을 '언더플로우 현상'이라고 한다.

 

다음같이 자료형의 표현 범위를 벗어나는 변수를 선언하는 경우 프로그래머가 예상한 결과 외의 값을 얻을 수 있기 때문에 설계되는 시스템 또는 프로그램의 성능에 맞는 적합한 변수 선언이 필요하다.

 

반응형

이 글을 공유합시다

facebook twitter googleplus kakaostory naver
-->