1. 변수란?
컴퓨터에 의해 프로그램이 실행이되면 CPU가 프로그램의 로직을 처리및 연산을 합니다. CPU는 저장공간이 크지 않아서 RAM(보조기억장치)에 도움을 받아 데이터를 저장하게 되는데요. RAM에 데이터를 저장하기위한 공간이 바로 변수가 되겠습니다. 컴퓨터가 지정한 메모리 공간의 이름이 어려운 관계로 사람이 이해하기 쉽게 이름을 지정하여 메모리 공간을 할당한 것입니다. 변수는 프로그램 실행 중에 값을 변경하거나 참조할 수 있으며, 다양한 타입을 가질 수 있습니다. 변수의 타입에 따라 메모리에 할당되는 크기와 형태가 달라집니다.
2. 변수의 선언방법
[접근지정자] 타입 이름;
전역 변수의 경우 접근지정자가 들어가지 않습니다. 클래스에서 사용할때 접근지정자가 들어가고 만약 클래스에서 접근지정자를 생략한다면 private이 지정되고 구조체에서 생략한다면 public이 자동으로 셋팅 됩니다.
#include <iostream>
int age; // 전역변수
//public int a; //에러..
class Member
{
int age; // private이 생략..
public:
int cnt;
float a;
};
struct Student
{
int age; // public 이 생략..
public:
int cnt;
float a;
};
3. 변수의 사용 규칙
1) 변수 이름은 영문자, 숫자, 밑줄(_)로 구성할 수 있으며, 숫자로 시작할 수 없습니다.
2) 변수는 선언 전에 반드시 초기화해야 합니다.
3) 변수의 타입이 달라지면, 저장할 수 있는 값의 종류와 크기가 달라집니다.
4. 변수의 초기화와 값의 할당.
변수를 선언해서 메모리의 공간을 확보했으면 데이터를 저장을 해야합니다. 데이터를 저장하는 행위로 할당 또는 대입이란 용어들도 사용합니다. 변수선언과 동시에 값을 할당한다면 이를 초기화 라고 합니다.
#include <iostream>
using namespace std; // 이걸 선언하면 "std::"을 생략해도 된다.
int main() {
int age = 25; // 정수형 변수 선언 및 초기화
double height = 175.5; // 실수형 변수 선언 및 초기화
char grade = 'A'; // 문자형 변수 선언 및 초기화
string name = "Alice"; // 문자열 변수 선언 및 초기화
bool isStudent = true; // 불리언 변수 선언 및 초기화
cout << "Name: " << name << endl; // std::cout, std::endl 이렇게 사용 안해도 된다!
cout << "Age: " << age << endl;
cout << "Height: " << height << endl;
cout << "Grade: " << grade << endl;
cout << "Is student: " << isStudent << endl;
return 0;
}
5. 변수의 동적 초기화
선언과 동시에 계산된 값을 할당할 수도 있습니다.
int a = 10;
int b = 20;
int sum = a + b; // sum 변수에 a와 b의 합을 초기값으로 설정
6. 자주사용하는 변수 타입
C++에서 사용되는 주요 변수 타입은 다음과 같습니다.
int: 정수를 저장하는 타입으로, 크기는 보통 4바이트(32비트)입니다.
double: 실수를 저장하는 타입으로, 크기는 보통 8바이트(64비트)입니다.
float: 실수를 저장하는 타입으로, double보다 적은 크기(보통 4바이트)를 가집니다.
char: 단일 문자를 저장하는 타입으로, 1바이트 크기를 가집니다.
bool: 참(true) 또는 거짓(false) 값을 저장하는 타입입니다.
string: 문자열을 저장하는 타입으로, <string> 헤더 파일을 포함하여 사용할 수 있습니다.
7. 변수 타입의 종류
형식 이름 | 바이트 | 기타 이름 | 값의 범위 |
int | 4 | signed | -2,147,483,648 ~ 2,147,483,647 |
unsigned int | 4 | unsigned | 0 ~ 4,294,967,295 |
__int8 | 1 | char | -128 ~ 127 |
unsigned __int8 | 1 | unsigned char | 0 ~ 255 |
__int16 | 2 | short, short int, signed short int | -32,768 ~ 32,767 |
unsigned __int16 | 2 | unsigned short, unsigned short int | 0 ~ 65,535 |
__int32 | 4 | signed, signed int, int | -2,147,483,648 ~ 2,147,483,647 |
unsigned __int32 | 4 | unsigned, unsigned int | 0 ~ 4,294,967,295 |
__int64 | 8 | long long, signed long long | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
unsigned __int64 | 8 | unsigned long long | 0 ~ 18,446,744,073,709,551,615 |
bool | 1 | 없음 | false 또는 true |
char | 1 | 없음 | –128~127(기본값) /J를 사용하여 컴파일된 경우 0~255 |
signed char | 1 | 없음 | -128 ~ 127 |
unsigned char | 1 | 없음 | 0 ~ 255 |
short | 2 | short int, signed short int | -32,768 ~ 32,767 |
unsigned short | 2 | unsigned short int | 0 ~ 65,535 |
long | 4 | long int, signed long int | -2,147,483,648 ~ 2,147,483,647 |
unsigned long | 4 | unsigned long int | 0 ~ 4,294,967,295 |
long long | 8 | 없음(그러나 __int64와 동일) | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
unsigned long long | 8 | 없음(그러나 unsigned __int64와 동일) | 0 ~ 18,446,744,073,709,551,615 |
enum | 다양함 | 없음 | |
float | 4 | 없음 | 3.4E +/- 38(7자리 숫자) |
double | 8 | 없음 | 1.7E +/- 308(15자리 숫자) |
long double | double과 같습니다. | 없음 | double과 같음 |
wchar_t | 2 | __wchar_t | 0 ~ 65,535 |