[C++] 변수와 상수

haaana·2023년 11월 13일
0



2. 변수와 상수


2.1 변수

📌 변수 Variable

변수 란 프로그램에서 일시적으로 데이터를 저장하는 공간을 말한다.
변수는 저장된 값의 변경이 가능하다.

변수는 왜 필요한가?

데이터가 입력되면 어딘가에 저장해야 다음에 사용할 수 있다.

📌 선언

변수의 선언은 데이터형 변수명 ; 순으로 한다.

다음은 변수 선언의 예시이다.

#include <iostream>
using namespace std;

int main() {
	int myValue;
}

여기서 int 는 데이터형, myValue 는 변수명을 나타낸다.

정수 데이터를 저장할 공간을 myValue 라고 이름을 붙여 메모리에 4 Byte 할당할 예정이라고 컴파일러에 알려준다.

int 이외에도 사용할 수 있는 데이터형은 다양한데 데이터형은 뒤에서 자세히 알아보자.

📌 초기화

변수의 초기화는 변수명 = 초기값 ; 순으로 한다.

다음은 변수 초기화의 예시이다.

#include <iostream>
using namespace std;

int main() {
	int myValue;
	myValue = 1;
}

여기서 myValue 는 변수명, 1 은 초기값을 나타낸다.

📌 선언 & 초기화

변수의 선언과 초기화를 동시에 하는 방법도 있다.
데이터형 변수명 = 초기값 ; 순으로 한다.

다음은 변수의 선언과 초기화를 동시에 하는 예시이다.

#include <iostream>
using namespace std;

int main() {
	int myValue = 1;
}

여기서 int 는 데이터형, myValue 는 변수명, 1 은 초기값을 나타낸다.

int 이외에도 사용할 수 있는 데이터형은 다양한데 데이터형은 바로 뒤에서 자세히 알아보자.

📌 자료형

변수는 Data type 에 따라 구분하여 사용한다.
메모리 크기, 값의 범위가 다양한 데이터형은 적절하게 사용하면 메모리 사용량을 줄일 수 있다.

#include <iostream>
using namespace std;

int main() {
    int myValue = 1;
    char myValue2 = 'A';
    float myValue3 = 3.14;
    bool myValue4 = true;
}

다음은 자료형에 따른 메모리 크기와 표현 가능한 값의 범위이다.

데이터 구분데이터형메모리 크기최소값최대값
정수Byte1 Byte0255
short2 Byte-32,76832,767
unsigned short2 Byte065,535
int4 Byte-2,147,483,6482,147,483,647
unsigned int4 Byte04,294,967,295
long4 Byte-2,147,483,6482,147,483,647
unsigned long4 Byte04,294,967,295
실수float4 Byte3.4E383.4E^{-38}3.4E383.4E^{38}
double8 Byte1.8E3081.8E^{-308}1.8E3081.8E^{308}
문자char1 Byte-128127
unsigned char1 Byte0255
논리bool1 ByteFalse 또는 True

📌 문자열 string

문자열은 char 말고도 string 을 사용할 수 있다.

string 을 사용하기 위해서는 반드시 다음의 헤더 파일을 포함해야 한다.

#include <string>

string 의 선언과 초기화하는 방법은 char 데이터형과 동일하다.
string 변수명 = " 초기값 " ; 순으로 한다.

문자열 비교는 == 연산자를 사용한다.

#include <iostream>
#include <string>
using namespace std;

int main() {
    string myValue = "Good";
    string myValue2 = "Morning";
    
    string result = myValue + " " + myValue2 + "!\n";
    cout << result;
    
    return 0;
}



2.2 상수

📌 상수 Constant

상수 는 저장된 값의 변경이 불가능하다.
→ 상수를 선언할 땐 꼭 선언과 동시에 초기화를 같이 해야한다.

📌 기호 상수 Symbolic Constant

예를 들어, 원의 넓이를 구하는 코드를 작성할 때 매번 3.141592를 입력하기는 번거롭다.
그래서 'PI = 3.141592' 를 대입한 다음 코드에서 원주율을 사용할 땐 'PI'를 변수처럼 사용한다.
이때 'PI'를 기호 상수 (symbolic constant) 라고 한다.

기호 상수의 장점은 무엇인가?

기호 상수는 프로그래밍의 편의성과 소스 코드의 가독성을 높이는 역할을 한다.
→ 데이터 수정 시 기호상수가 정의된 곳만 수정하면 된다.

기호 상수의 정의 방법에는 두 가지 방법이 있다.
const 키워드를 사용하는 방법과 #define 전처리기를 사용하는 방법이다.

📌 const

const 를 사용하는 기호 상수는 코드 안에서 어디든 선언할 수 있다.
컴파일러 가 처리한다.

상수의 선언은 const 데이터형 상수명 = 데이터값 ; 순으로 한다.

다음은 상수 초기화의 예시이다.

#include <iostream>
using namespace std;

int main() {
    double radius, result;
    const double PI = 3.141592;
    
    radius = 2.5;
    result = PI * radius * radius;
    
    printf("원의 넓이는 %lf입니다.\n", result);
    
    return 0;
}

📌 #define

#define 를 사용하는 기호 상수는 전처리기 부분에 선언한다.
→ 전처리 단계에서 전처리기 가 처리한다.

상수의 선언은 #define 상수명 데이터값 순으로 한다.

다음은 상수 초기화의 예시이다.

#include <iostream>
using namespace std;
#define PI 3.141592

int main() {
	double radius, result;
    
    radius = 2.5;
    result = PI * radius * radius;
    
    printf("원의 넓이는 %lf입니다.\n", result);

    return 0;
}

📌 'const'와 '#define'의 차이점

#define PI 3.141592

#define 은 매크로 상수이다.
→ 즉, 전처리기가 단순히 코드 상에 있는 #define 으로 정의된 모든 상수를 치환한다는 의미이다.
#define 은 단순히 치환되는 값이기 때문에 변수형을 지정할 필요가 없다.

const double PI = 3.141592;

const는 메모리를 할당받은 변수이다.
→ 컴파일 과정에서 변수를 상수로 인식하게 된다.

const 는 변수이므로 반드시 변수형을 지정해줘야 한다.
const 를 사용했을때 코드에서 발생하는 오류를 더 쉽게 감지할 수 있다.

임베디드처럼 메모리를 절약해야 하는 환경에서는 define을 사용하는 것이 좋다.
하지만 일반적으로는 프로그래밍의 편의성과 소스 코드의 가독성을 const 를 사용하는 것이 좋다.



2.3 식별자

📌 식별자 Identifier

식별자 란 변수, 상수, 함수, 배열 등에 붙이는 이름을 말한다.

식별자는 왜 필요한가?

변수, 상수 등에 각각의 이름을 붙여 다른 것들과 식별하기 위해 사용한다.

📌 식별자 규칙

식별자를 만드는 규칙이 있다.

식별자 네이밍 규칙
1. 영문 대소문자 52개, 숫자 (0 ~ 9) 10개, 특수기호 (_) 1개만 사용할 수 있다. → 총 63개 사용 가능
2. 첫 글자엔 숫자가 올 수 없다. 반드시 영문자_ 로 시작되어야 한다.
3. 키워드 를 사용할 수 없다.



2.4 키워드

📌 키워드 Keyword

키워드 란 C 언어에서 명령어나 어떤 의미있는 의미로 사용되는 단어를 말한다.
예약어 라고도 한다.

C 언어의 키워드와 C++ 언어의 키워드는 서로 다르다.

📌 C 언어의 키워드

C 언어에서 사용하는 키워드는 다음과 같다.

키워드키워드키워드키워드키워드
autodoubleintstructbreak
elselongswitchcaseenum
registertypedefcharexternreturn
unionconstfloatshortunsigned
continueforsignedvoiddefault
gotosizeofvolatiledostatic
whileifinlinerestrict

📌 C++ 언어의 키워드

C++ 언어에서 사용하는 키워드는 다음과 같다.

키워드키워드키워드키워드키워드
autodoubleintstructbreak
elselongswitchcaseenum
registertypedefcharexternreturn
unionconstfloatshortunsigned
continueforsignedvoiddefault
gotosizeofvolatiledostatic
whileclassinlineasmbool
catchifconst_castdeletedynamic_cast
explicitexportfalsefriendmutable
namespacenewoperatorprivateprotected
publicreinterpret_caststatic_casttemplatethis
throwtruetrytypeidtypename
usingvirtualwchar_t



profile
평범한 개발자

0개의 댓글