일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 산책하기 좋은 곳
- 실습
- 소스 코드
- 강의
- Windows Forms
- C++
- 동영상 강의
- 표준 입출력
- 안드로이드 앱 개발
- 네트워크 프로그래밍
- 유튜브 동영상 강의
- 졸업 작품 소재
- 원격 제어 프로그램
- 언제나 휴일
- 파이썬
- c언어
- 충남 천안
- 언제나휴일
- 표준 라이브러리 함수
- 소켓 통신
- 캡슐화
- 프로젝트
- 동영상
- 알고리즘
- 실습으로 다지는 c#
- c#
- 독립기념관
- 무료 동영상 강의
- 추천
- 클래스 다이어그램
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
[C++] 10. 신뢰성 강화(열거형) 본문
C++언어는 C언어보다 자료 형식에 관한 부분에서 신뢰성을 강화하고 있어요.
먼저 C언어에서는 열거형 변수에 정수 형식을 대입하거나 초기화를 하는 것이 가능합니다.
//C언어에서의 열거형 사용
//Program.c
#include <stdio.h>
enum Gender
{
FEMALE, MALE
};
int main()
{
enum Gender g = 3;//C언어에서는 열거형 변수에 정수형을 대입 및 초기화 가능
printf("g is %d\n",g);
return 0;
}
▷ 실행 결과
g is 3
하지만 C++에서는 열거형 변수에 정수 형식을 대입하거나 초기화할 수 없어요.
다음은 열거형 변수에 정수를 대입하였을 때 컴파일 오류가 발생하는 예제 코드예요.
//신뢰성 강화 - 열거형 변수에 정수 표현 대입 불가
//Program.cpp
#include <iostream>
using namespace std;
enum Gender
{
FEMALE, MALE
};
int main()
{
Gender g = 3;//열거형 변수에 정수형을 대입 및 초기화 불가
return 0;
}
이와 같은 오류를 발생하게 한 이유는 열거형에 나열한 값은 정수 형식의 부분 집합이지만 모든 정수 형식에 있는 값을 사용할 수 없기 때문에 발생하는 것입니다. 특히 열거형에 열거한 값이라도 정수 형식을 대입할 수 없어요. 컴파일러는 변수의 형식으로 오류를 검사하는 것이지 값으로 검사하지 않기 때문이죠.
하지만 정수 형식 변수에 열거형을 대입하는 것은 가능해요. 따라서 정수 형식이 올 수 있는 곳에 열거형을 사용하는 것은 아무 문제가 없습니다. 이는 열거형에 나열할 수 있는 값은 정수 형식을 벗어날 수 없기 때문에 신뢰성에 아무 문제가 없기 때문입니다.
//정수 형식이 올 곳에 열거형 사용
//Program.cpp
#include <iostream>
using namespace std;
enum Subject
{
KOREAN, ENGLISH, MATH, MAX_SUBJECT
};
enum ScoreConst
{
DEF_SCORE=-1, MIN_SCORE=0, MAX_SCORE=100
};
int main()
{
//정수 형식일 올 곳에 열거형을 사용하는 예제 코드
const char *titles[MAX_SUBJECT] = {"국어","영어","수학"};
int scores[MAX_SUBJECT]={DEF_SCORE,DEF_SCORE,DEF_SCORE};
scores[KOREAN] = 90;
scores[ENGLISH] = MAX_SCORE;
scores[MATH] = MIN_SCORE;
for(int si = 0; si<MAX_SUBJECT; si++)
{
cout<<titles[si]<<":"<<scores[si]<<endl;
}
return 0;
}
▷ 실행 결과
국어:90
영어:100
수학:0
'C & C++ > 디딤돌 C++' 카테고리의 다른 글
[C++] 15. 접근 지정자 (0) | 2024.04.06 |
---|---|
[C++] 14. 캡슐화 개요 (0) | 2024.04.06 |
[C++] 13. OOP 개요 (0) | 2024.04.06 |
[C++] 11. 논리 형식 bool 제공 12. string 형식 개요 (0) | 2024.04.06 |
[C++] 9. 레퍼런스 변수 (0) | 2024.04.05 |
[C++] 8. 이름 충돌을 방지하는 namespace (0) | 2024.04.04 |
[C++] 6. 디폴트 매개 변수 7. 매개 변수 이름이 없는 스텁 매개 변수 (0) | 2024.04.04 |
[C++] 5. 함수 중복 정의 (FUNCTION OVERLOADING) (0) | 2024.04.03 |