Language/C

[ C ] 데이터형

곽수진 2021. 9. 13. 14:25
반응형

★ C언어는 메모리에 저장된 데이터에 두 가지 방식으로 접근이 가능함 ★ 

 변수 이름을 지정해이름으로 접근 / 메모리 주소를 이용하는 포인터 접근 방식

 

 


 

 

기본 데이터형

데이터 크기가 중요한 기준점 중 하나

 

문자형

  • char : 1byte

→ 1byte 정수를 저장할 때도 사용 가능 : -128 ~ 127 값

 

★ 문자열을 저장할 수 있는 기본 데이터형은 없음 ★

★ unsigned char(0~255 값)형은 1바이트 크기의 2진데이터를 저장할 때 주로 사용함 ★

 

→ 작은 크기의 정수를 저장할 때 유용함

#include<stdio.h>

int main(void){
    
    char n = 97;
    
    printf("n = %d\n", n);
    printf("n+1 = %d\n", n+1);
    
    return 0;
}

 

결과값 출력 모습

printf("n = %d\n", n) : 10진수 정수로 출력

printf("n+1 = %d\n", n + 1) : 정수처럼 덧셈 연산이 가능

 

 

 


 

 

정수형 (2, 4, 8 byte로 구분)

  • short : 2byte

→ 2byte : -32768 ~ 32767 값

 

= short int, signed short, signed short int 

빨간 글씨는 생략될 수 있음

 

★ unsigned short int = unsigned short

 

#include<stdio.h>

int main(void) {
    short a = 32768;

    printf("%d\n", a);

    return 0;
}

 

결과값 출력 모습

 

▶ -32768로 논리 오류 발생

→ 범위를 양수로만 표현하기 위해 unsigned short로 바꿔야 함

 

 

- 오류 수정 -

#include<stdio.h>

int main(void) {
    unsigned short a = 32768;

    printf("%d\n", a);

    return 0;
}

 

결과값 출력 모습

 

 

★ 정수형의 가장 기본 ★ 

  • int : 2 / 4byte (16비트 기준으로 동작) 

 

short int, long int, signed int, signed

빨간 글씨는 생략될 수 있음

 

★ unsigned int = unsigned

 

#include<stdio.h>

int main(void) {

    unsigned x; // int값 범위는 +- 2100000000
    x = 4200000000;

    printf("%d\n", x);

    return 0;
}

 

결과 출력 모습

unsigned int의 범위는 0 ~ +4200000000

▶ 입력된 x값과 다른 값이 출력됨

→ 출력 서식 문자 오류 : %dint에 최적화 되어있음

unsigned int에 맞는 출력 서식 문자 : %u

 

 

#include<stdio.h>

int main(void) {

    unsigned x;
    x = 4200000000;

    printf("%u\n", x);

    return 0;
}

 

결과값 출력 모습

 

 

  • long : 4byte

→ 4byte : -2147483648 ~ 2147483647 값

 

= long int, signed long, signed long int

빨간 글씨는 생략될 수 있음

 

★ unsigned long int = unsigned long 

 

 

  • long long

 

 

양수와 음수 구분 : signed (default값)

★ unsigned : 양수(0 포함)로만 저장 ★ 

(signed) short d; // -32768~32767
unsigned short d; // 0~65535

≫ signed는 생략할 수 있지만 unsigned는 생략하면 signed와 같아짐

unsigned뒤에 int는 예외로 생략할 수 있음

(signed) int x; // +-21억
unsigned x; // 0~+42억

 

 


 

 

실수형

  • float : 4byte

 

★ 실수형의 가장 기본 ★ 

  • double : 8byte

 

  • long double : 10byte

 

 


 

 

파생 데이터형

- 배열

- 포인터

 

 

사용자 정의형

- 구조체

- 공용체

- 열거체

반응형