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