정보처리기사/프로그래밍 언어 활용

데이터 타입 유형 (C / C++ / Java)

glorypang 2025. 10. 28. 20:28
728x90
반응형
SMALL

1) 기본 자료형 한눈에

C

  • 불린: _Bool (또는 #include <stdbool.h> 후 bool)
  • 문자: char (1바이트 문자)
  • 문자열: 문자 배열/포인터 (char *s = "car";) — C에 string 타입은 없음
  • 정수: short, int, long, long long (+ 각 unsigned)
  • 실수: float, double, long double

C++

  • 불린: bool
  • 문자: char, wchar_t, char16_t, char32_t
  • 문자열: std::string (C++ 표준), C 스타일 문자열(const char*)
  • 정수: short, int, long, long long (+ unsigned), 고정폭 <cstdint>: int8_t 등
  • 실수: float, double, long double

Java

  • 불린: boolean
  • 문자: char(UTF-16 코드 유닛, 16비트)
  • 문자열: String (불변 객체)
  • 정수: byte(8), short(16), int(32), long(64)
  • 실수: float(32), double(64)

2) C printf 형식 지정자

타입 지정자  비고
int %d, %i  
unsigned int %u  
long %ld LP64(리눅스/맥)에서 64비트, Windows(LLP64)에서 32비트
unsigned long %lu  
long long %lld 64비트 보장
unsigned long long %llu  
float %f printf에 전달 시 double로 승격
double %f, %e, %g  
long double %Lf  
char %c  
C 문자열(char *) %s  

고정 폭 정수(int32_t, uint64_t 등)는 <inttypes.h>의 매크로 사용 권장
예: printf("%" PRId64 "\n", val64);


3) “정수 데이터 타입” 비교 (자주 묻는 크기 차이)

Java(고정 크기, 플랫폼 무관)

타입  비트 범위(부호 있는 기준)
byte 8 −128 ~ 127
short 16 −32,768 ~ 32,767
int 32 약 −2.1e9 ~ 2.1e9
long 64 약 −9.22e18 ~ 9.22e18

부호 없는 정수는 기본 제공 없음(Java 8+에서 Integer.toUnsigned… 유틸 있음).

C / C++(플랫폼 의존, 대표 ABI)

  • LP64(리눅스/맥, 대부분 유닉스):
    int=32, long=64, long long=64
  • LLP64(Windows 64비트):
    int=32, long=32, long long=64
타입  LP64(리눅스/맥)  LLP64(윈도우)
short 16 16
int 32 32
long 64 32
long long 64 64
size_t 64 64

이식성 필요하면 <stdint.h>/<cstdint>의 고정 폭 사용: int8_t, uint16_t, int32_t, uint64_t 등.

728x90
반응형
LIST