Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

정적 const 대 #define 대 enum ?

<시간/>

"정적 상수"

"정적 const"는 기본적으로 static(저장 지정자)과 const(유형 한정자)의 조합입니다.

static은 변수의 수명과 가시성/접근성을 결정합니다. 이는 변수가 정적 변수로 선언된 경우 프로그램이 실행되는 동안 내내 메모리에 남아 있는 반면 일반 또는 자동 변수는 함수(변수가 정의된 곳)가 끝나면 소멸된다는 것을 의미합니다.

const는 유형 한정자입니다. 유형 한정자는 유형 시스템을 통해 값에 대한 추가 정보를 표현하는 데 사용됩니다. 변수가 const 유형 한정자를 사용하여 초기화되면 값이 더 이상 변경되지 않습니다.

따라서 static과 const를 결합하면 static const를 사용하여 변수를 초기화할 때 프로그램이 실행될 때까지 해당 값을 유지하고 값의 변경을 허용하지 않는다고 말할 수 있습니다.

예시

#include<iostream>
using namespace std;
int main(){
int input = 10;
static const int value = 5;
input += value;
cout << input;
return 0;
}
사용

#정의"

전처리기 명령은 DIRECTIVES라고 하며 파운드 또는 해시 기호(#)로 시작합니다. # 앞에 공백이 있으면 안 되며 끝에 세미콜론이 필요하지 않습니다.

전처리 단계에서 수행할 수 있는 많은 작업은 다음과 같습니다.

  • #include 지시문을 통한 다른 파일 포함

  • #define 지시문을 통한 기호 상수 및 매크로 정의

일부 전처리기 지시문을 통해 일부 전처리기 지시문을 조건부로 컴파일하거나 실행할 수도 있습니다.

참고 - C++ 프로그램의 전처리 단계는 프로그램이 컴파일되기 전에 발생합니다. C++ 전처리기는 소스 코드가 컴파일되기 전에 실행되는 프로그램입니다.

프로그램에 원하는 헤더 파일을 포함할 수 있는 #include 전처리기 지시문을 사용하는 방법을 이미 배웠습니다. 이 토론 또는 우리의 토론은 #define 전처리기 지시문에 관한 것입니다.

#define 전처리기를 사용하면 기호 이름과 상수를 정의할 수 있습니다. 예를 들어,

#define PI 3.14159

이 문은 프로그램에서 모든 PI 발생을 3.14159로 변환합니다.

C++ #define 예제

이제 모든 PI가 #define 지시문으로 정의된 값인 3.14159 값으로 대체되는 완전한 예를 고려하십시오.

Input: PI 3.14159
Output: Area of Circle 314.15

예시

#include<iostream>
using namespace std;
#define PI 3.14159
int main() {
   int r = 10;
   float cir;
   cir = PI * (r * r);
   cout<<"Area of Circle: "<<cir<<endl;
}

"열거"

열거형은 변수에 대한 값 집합을 지정하고 변수가 가능한 값의 작은 집합 중 하나만 가져올 수 있는 사용자 정의 데이터 유형입니다. 열거형을 정의하기 위해 열거형 키워드를 사용합니다.

enum direction {East, West, North, South}dir;

여기서 Enumeration 이름은 지정된 4개 값 중 하나만 사용할 수 있는 방향이며 선언 끝에 있는 dir은 열거형 변수입니다.

이를 이해하기 위해 간단한 예를 들어보겠습니다.

여기에서 West 값을 열거형 변수 dir에 할당했으며 dir 값을 표시했을 때 1로 표시되었습니다. 이는 기본적으로 값이 0부터 시작하여 증가하는 순서이기 때문입니다. 즉, East는 0, West는 1, North를 의미합니다. 2이고 남쪽이 3입니다.

Input: direction {East, West, North, South} dir=West
Output: 1

예시

#include<iostream>
using namespace std;
enum direction {East, West, North, South} dir;
int main(){
   dir = West;
   cout<<dir;
   return 0;
}

열거형 변수를 선언하는 또 다른 방법

위의 예에서 열거형 선언 중에 열거형 변수 dir을 선언한 것을 보았듯이 열거형 변수를 선언하는 또 다른 방법이 있습니다.

예시

#include <iostream>
using namespace std;
enum direction {East, West, North, South};
int main() {
   direction dir;
   dir = South;
   cout<<dir;
   return 0;
}

출력

3

C++에서 열거형을 사용하는 이유

이제 enum이 무엇이고 프로그램에서 사용하는 방법을 이해했으므로 사용하는 이유에 대해 논의해 보겠습니다.

열거형은 변수에 가능한 값 집합 중 하나가 있을 것으로 예상되는 경우에만 사용됩니다. 예를 들어 방향을 유지하는 dir 변수가 있습니다. 네 가지 방향이 있기 때문에 이 변수는 네 가지 값 중 하나를 사용할 수 있습니다. 이 변수에 다른 임의의 값을 할당하려고 하면 컴파일 오류가 발생합니다. 이렇게 하면 컴파일 시간 검사가 증가하고 잘못된 상수를 전달하여 발생하는 오류를 방지할 수 있습니다.

자주 사용되는 또 다른 중요한 위치는 switch case 문입니다. 여기서 case 블록이 예상하는 모든 값은 열거형으로 정의할 수 있습니다. 이렇게 하면 switch 괄호에 전달한 열거형 변수가 허용하지 않아야 하는 임의의 값을 취하지 않도록 할 수 있습니다.