변수와 자료형: 값을 담는 그릇
공식
변수란?
변수(variable) 는 값을 담아 두는 이름표가 붙은 상자입니다. 프로그램은
입력으로 받은 수, 중간 계산 결과 따위를 변수에 저장해 두고 꺼내 씁니다.
int age = 17; // 정수
double pi = 3.14; // 실수
char grade = 'A'; // 문자 하나
age = 17 # 정수
pi = 3.14 # 실수
grade = 'A' # 문자열(파이썬엔 char 타입이 없다)
C++은 변수를 만들 때 자료형을 반드시 적어야 하고, 파이썬은 대입하는 값에
따라 자료형이 자동으로 정해집니다.
1. 자주 쓰는 정수 자료형 (C++)
| 자료형 | 크기 | 대략적인 범위 |
|---|---|---|
int |
4바이트 | 약 -21억 ~ 21억 |
long long |
8바이트 | 약 -9.2 × 10^18 ~ 9.2 × 10^18 |
규칙은 간단합니다. 계산 결과가 약 21억(2,147,483,647)을 넘을 수 있으면
long long을 쓰세요. 예를 들어 두 수의 곱이나 1부터 N까지의 합은 금방
int 범위를 넘깁니다.
long long a = 1000000, b = 1000000;
cout << a * b << '\n'; // 10^12 — long long이라 안전
파이썬의 정수(int)는 크기 제한이 없으므로 오버플로를 걱정할 필요가 없습니다.
2. 실수 자료형
소수를 담을 땐 C++에서 double을 씁니다 (float보다 정밀해서 거의 항상
double을 권장).
double x = 1.0 / 3.0; // 0.333333...
실수는 정확히 저장되지 않을 수 있다는 점만 기억하세요. 0.1 + 0.2가
정확히 0.3이 아닌 것이 대표적입니다. 그래서 실수는 ==로 비교하지 않고,
"차이가 아주 작으면 같다"로 판단합니다.
3. 자료형 변환 (형변환)
int a = 7, b = 2;
double r = (double)a / b; // 3.5 — 한쪽을 double로 바꿔야 함
a, b = 7, 2
print(a / b) # 3.5 (파이썬 /는 항상 실수 나눗셈)
print(a // b) # 3 (정수 나눗셈)
C++에서 int / int는 정수 나눗셈이라 7 / 2 == 3이 됩니다. 실수 결과가
필요하면 한쪽을 double로 형변환하세요.
4. 자주 하는 실수
- 오버플로 —
int끼리 곱했는데 결과가 21억을 넘는 경우.long long으로 바꾸거나, 곱하기 전에(long long)으로 형변환하세요. - 초기화 안 한 변수 — C++에서 값을 넣지 않은 지역 변수는 쓰레기 값을 가집니다. 합을 구할 땐 꼭
int sum = 0;처럼 0으로 시작하세요. - 정수 나눗셈 착각 — 평균을 구할 때
(a+b)/2가 정수로 잘리는 실수가 흔합니다.
연습 팁
새 변수를 만들 때마다 "이 값이 가질 수 있는 최댓값은 얼마인가?"를 먼저
떠올려 보세요. 그 답이 21억을 넘으면 망설이지 말고 long long입니다.