본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Data Type
변수나 값이 가질 수 있는 데이터의 종류와 크기, 허용되는 연산을 정한 것
  • 자료형에 따라 메모리 할당 크기, 표현 범위, 연산 방식이 달라진다.
  • 정적 타입 언어(C, Java)는 컴파일 시점에 변수의 자료형이 정해지고, 동적 타입 언어(Python)는 실행 시점에 값에 따라 정해진다.
  • 기본(원시) 자료형 외에 배열, 구조체, 클래스, 리스트 등 참조·복합 자료형이 있다.

C·Java·Python 기본 자료형 비교

편집 원본 편집
분류 C Java Python
문자 char 1바이트 char 2바이트(UTF-16 코드 단위) str (문자 자료형 없음)
정수 short 2, int 4, long 4 또는 8, long long 8 byte 1, short 2, int 4, long 8 int (크기 제한 없음)
실수 float 4, double 8 float 4, double 8 float (배정밀도 8바이트)
논리 _Bool (C99, 0/1) boolean (true/false) bool (True/False)
  • 크기 단위는 바이트이다.
  • C의 크기는 구현(플랫폼)에 따라 다르다. 표준은 최소 범위만 정한다(char ≥ 8비트, int ≥ 16비트, long ≥ 32비트). 64비트 Windows(LLP64)는 long이 4바이트, 64비트 리눅스(LP64)는 long이 8바이트이다. 일반적인 환경에서 int는 4바이트이다.
  • Java의 크기는 언어 명세로 고정되어 플랫폼과 무관하다. boolean의 크기는 명세에 정해져 있지 않다.
  • Java의 문자열 String, Python의 str은 기본 자료형이 아닌 객체이다.
  • 관련 문서: C 언어 자료형, 파이썬 변수형
  • 묵시적(자동) 형 변환: 작은 범위의 자료형이 큰 범위로 자동 변환된다. 예: int와 double을 연산하면 int가 double로 변환된다.
  • 명시적(강제) 형 변환: 캐스트 연산자로 직접 변환한다. 실수 → 정수 변환 시 소수점 이하는 버려진다(0 방향).
  • Java는 큰 자료형을 작은 자료형에 대입하려면 명시적 변환이 필요하며, 없으면 컴파일 오류가 난다.
System.out.println(10 / 4 + " " + 10 / 4.0);  // 2 2.5
System.out.println((int) 3.99);               // 3
System.out.println((byte) 130);               // -126
char ch = 'A';
System.out.println(ch + 1);                   // 66
System.out.println((char) (ch + 1));          // B
print(int("3") + 1, str(3) + "1")   # 4 31
print(int(3.99), int(-3.99))        # 3 -3

정수 오버플로

편집 원본 편집
  • 자료형이 표현할 수 있는 범위를 넘으면 값이 반대쪽 끝으로 돌아간다(2의 보수 표현 기준).
  • Java의 int 범위는 -2,147,483,648 ~ 2,147,483,647이며, 최댓값에 1을 더하면 최솟값이 된다.
  • C에서 부호 없는 정수(unsigned)의 오버플로는 모듈러 연산으로 정의되지만, 부호 있는 정수의 오버플로는 정의되지 않은 동작(undefined behavior)이다.
  • Python의 int는 임의 정밀도이므로 오버플로가 발생하지 않는다.
int max = Integer.MAX_VALUE;
System.out.println(max + 1);        // -2147483648
long big = 3000000000L;
System.out.println((int) big);      // -1294967296
unsigned char u = 255;
u++;
printf("%d\n", u);    /* 0 */
  • Java 기본 자료형 8가지와 크기(byte 1, short 2, int 4, long 8, float 4, double 8, char 2, boolean)를 외운다.
  • C의 long 크기는 플랫폼에 따라 4 또는 8바이트이다.
  • 정수 나눗셈과 강제 형 변환(소수점 버림), byte 캐스팅 결과를 계산하는 문제가 자주 나온다.