지난 포스트에 이어 자료형에 대한 내용이다.

 

C는 정수값을 저장하는데  세 가지 자료형을 사용한다. 1바이트, 2바이트, 4바이트 크기의 자료형이다. 1바이트 자료형이 2-1의 char 형이다.

 

* short int 형

short int 형은 2바이트이다. 2의 16승. 65536개

 

signed short int 범위:    -32,768 ~ 32,767

unsigned short int 범위:         0 ~ 65,536

short int 범위 : signed short int 와 동일함

 

#include <stdio.h>

int main(void){
	
	signed short int a1;
	signed short int a2;	
	unsigned short int b1;
	unsigned short int b2;
	short int c1;
	short int c2;
	
	a1 = -32768;
	a2 =  32767;
	
	b1 =      0;
	b2 =  65535;
	
	c1 = -32768;
	c2 =  32767;
	
	printf("%7d\n",a1);
	printf("%7d\n",a2);
	printf("\n");
	printf("%7d\n",b1);
	printf("%7d\n",b2);
	printf("\n");
	printf("%7d\n",c1);
	printf("%7d\n",c2);
	
	return 0;
} 

short int

 binary 0000 0000 0000 0000 decimal      0 
 binary 1111 1111 1111 1111 decimal 65,535

unsigned short int 의 범위 (16비트)

 

*short int는 32,000 ~65,000 정도를 사용하려고 할 때 사용한다.

 

 

* long int 형

long int형은 32비트 4바이트이다. 2의32승

 

signed long int 범위:     - 2,147,483,648 ~ 2,147,483,647

unsigned long int 범위:                     0 ~ 4,294,967,295

int 범위 : signed long int 와 동일함 (long int)

 

#include <stdio.h>

int main(void){
	
	signed long int a1;
	signed long int a2;	
	unsigned long int b1;
	unsigned long int b2;
	int c1;
	int c2;
	
	a1 = -2147483648;
	a2 =  2147483647;
	
	b1 =           0;
	b2 =  4294967295;
	
	c1 = -2147483648;
	c2 =  2147483647;
	
	printf("%15d\n",a1);
	printf("%15d\n",a2);
	printf("\n");
	printf("%15u\n",b1);
	printf("%15u\n",b2); // 부호없는 %u 자료형
	printf("\n");
	printf("%15d\n",c1);
	printf("%15d\n",c2);
	
	return 0;
} 

결과값 long int

* 4바이트 정수형은 ~20억 ~ 40억 범위의 수를 표현할 때 사용한다.

 

unsigned long int 의 경우

 

binary: 0000_0000_0000_0000_0000_0000_0000_0000  decimal:             0
binary: 1111_1111_1111_1111_1111_1111_1111_1111  decimal: 4,294,967,295

*생략한 형태

C에서는 생략한 형태를 사용한다.

 

signed char >> char

signed short int >> short

signed long int >> int

unsigned long int >> unsigned int

 

정수형에서 더 큰 자료형은 64비트 자료형인 long long 도 있다.

 

범위가

 

0~18,446,744,073,709,551,615

 

천문학적인 숫자라서 자주 쓰이지 않기 때문에, 추가적인 부분은 위키피디아를 참고한다.

 

주의사항은 데이터 타입은 시스템과 연관이 있다. 인텔의 예전 시스템(아마 펜티엄 전에?)에서 int형은 16비트였고 long 형이 32비트 였다. 지금은 int 가 32비트 형이다. 현시대의 OS는 32비트 데이터를 처리하는것이 효율적이라고 한다. 그래서 기본 정수타입은 32비트 정수형 int 이다.

 

위키피디아에도 그렇게 표기되어 있는데, 과거 시스템들을 의식해서 int를 16비트로 표기하지 않았을까 생각한다.

 

바이트의 크기를 알고 싶으면 변수에 sizeof () 연산자를 사용한다.

printf("%15d\n",sizeof(a1));

값 >> 4바이트 (a1은 integer 형 변수다)

 

Format Sperifier 가 위키피디아에 나와있으므로 printf 사용시 잘 확인하고 사용할 수 있도록 한다.

 

 

https://en.wikipedia.org/wiki/C_data_types참고링크 C 데이타 타입

 

C data types - Wikipedia

In the C programming language, data types constitute the semantics and characteristics of storage of data elements. They are expressed in the language syntax in form of declarations for memory locations or variables. Data types also determine the types of

en.wikipedia.org

 

C언어 변수와 데이터형 | 열린 C언어 독학 1-2 - 메타버스의 코딩

C언어 변수에 대하여 이해합니다. C언어 데이터형을 구분할 수 있습니다.

metaversemachine.com

 

공유하기

facebook twitter kakaoTalk kakaostory naver band