프로그램/C,C++

C언어의 변수형 정리

naudhizb 2015. 8. 14. 00:53
반응형


--

보이드(void)

변수형이 지정되지 않은 경우. 일반적으로 포인터 연산에 사용됨.


void(1 워드)


e.g.) void point;



정수형(signed)

음의 정수, 0, 양의 정수를 표현할 수 있는 변수형


char (8 비트)

short (16 비트)

int (1 워드)

long (32 비트)

long long (64 비트)


* int의 경우 16 또는 32비트이다.


e.g.) char variable = 0;




양의 정수(unsigned)

0과 양의 정수를 표현할 수 있는 변수형


unsigned char (8 비트)

unsigned short (16 비트)

unsigned int (1 워드)

unsigned long (32 비트)

unsigned long long (64 비트)


* unsigned int의 경우 16 또는 32비트이다.


e.g.) unsigned char variable = 0;




>> 어떤 자료형이 어떤 비트수를 가지고 있는지 외우기 어렵다면

#include <stdint.h>를 포함시켜 아래와 같이 변수선언을 간편하게 할 수 있다.


e.g.) 

#include <stdint.h>

uint8_t variable=0; // unsigned char와 같은 변수형

int32_t variable2=0; // long과 같은 변수형






부동소수점(floating point)

지수부와 가수부로 나뉘어 수를 표현하는 변수형, 작은 수부터 큰 수까지 넓은 범위를 표현할 수 있고,

오버플로우의 위험성이 낮지만, 언더플로우의 위험성을 가지고 있으며, 정확한 값의 계산이 어렵다.

또한 FPU가 탑재되지 않은 경우 심각한 연산속도 저하를 가져올 수도 있다.


float(32 비트)

double(64 비트)


* 아키텍쳐에 따라 32비트만을 지원할 수도 있다.



배열(Array)

위에 언급되어 있는 변수형들을(같은 변수형끼리) 나열하여 사용할 수 있는 변수. 인덱스는 0번부터 지정되며, 제대로 사용하기 위해서는 포인터에 대한 이해가 필수적이다.

인덱스는 0번부터 시작하는 것이 C언어의 특징이다. 


e.g.)

char array[10]={0,1,2,3,4,5,6,7,8}; // char 10개짜리 배열을 선언 마지막 인덱스(10번째)는 초기화되지 않았으므로 0으로 선언된다.

array[0] = 2; // 0번 인덱스(0)의 값을 2로 바꿈.


int array2[]={1,2}; // 사이즈를 비워둘 경우 초기화가 되는 양만큼만 선언된다 (사이즈 2)


unsigned int a[3][4]; //4개짜리가 3개 있는 배열을 선언


<출처 : http://kama1204.tistory.com/entry/%EB%B0%B0%EC%97%B4-%EC%9D%B4%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4>





구조체(struct)

위에 언급되어 있는 변수형들을(다른 변수형들도) 묶어서 선언할 수 있는 방식. 일반적으로 typedef와 같이 묶어서 간편하게 선언하는 경우가 많다.


e.g.)

typedef Name1 Name2; // Name1을 Name2로 대체하여 선언


struct S {

int x;

int y;

}S1;

// int형 변수 x와 y가 들어간 구조체 S를 정의하고 S1이라는 이름의 struct S형 변수를 선언


typedef sturct SS {

int a;

char b;

} SS1;

// a와 b가 들어간 구조체 SS를 정의하고 typedef구문을 이용하여 struct SS형의 변수를 SS1으로 대체선언


--> 

struct SS m1;

SS1 m2;

와 같이 선언 가능




나열형,열거상수 (enum)

정수만을 나열하여 선언 가능한 변수형식. 숫자를 따로 선언하지 않아도 자동적으로 증가하는 것이 특징이다.

e.g.)

enum (Name) { a,b,c=10,d=10,e};

a=0

b=1

c=10

d=10

e=11


typedef enum rome {a,b,c,d,e} alphabet;

enum rome aa = a;

alphabet bb = b;


*c언어의 경우 제한이 느슨하기 때문에 다른 나열형에서의 값도 넣는게 가능하므로 주의해야한다. c++의 경우 enum class로 해결한듯하다.



--




반응형