본문 바로가기
코스웨어/11년 내장형하드웨어

8월17일 일일보고서 - 김정우

by 알 수 없는 사용자 2011. 8. 17.
728x90
반응형


앞으로 남은기간 배울 것은

1. 하드웨어 인터페이스
2. windows
3. C++ & ASM(모니터보기)
4. Zigbee
5. 프로젝트


열거형(enum)

열거형은 이름을 갖는  정수형의 상수를 정의하여 프로그램을 이해하기 쉽게  해 준다.
열거형의 예약어 enum을 사용하여 다음과 같이 정의하며, 형식은 다음과 같다.
enum      type_name  
{
       열거 리스트
};
열거 리스트의 각 원소는 0에서  시작하는 정수 값을 가지고 있다.

열거형 1. enum test2 { ONE  = 105 };  는 2. #define ONE  105와 같은 결과를 가진다.
2번은 전처리시에 적용이 되는 것이고 1번은 C상에서  적용이 되는데 어느것을 사용하는것이 좋은지는 1번을 사용하는것이 좋다.


이 소스에서 보면 출력값은 0이  나온다.
a.one가 가지는 값은 enum test2의 ONE 값을 가지고 있다.
이것은 enum의 ONE값이 0을 초기값으로 가지고 있다는 것을 알 수 있다.

 



여기의 출력값을 보면 enum test2 속에 ZERO, ONE, TWO 3개가  들어있다.
이것을  각각 출력한 결과 0 , 1 , 2 가  순서대로 출력이  되었다.
처음에 ONE하나만 있을때는 0이 출력이 되었지만 3개가 되어서는  0부터 순차적으로 값이 1씩 늘어난 것을 볼 수 있다. 



이 소스를 통해서 보면  ZERO에 100이 들어가 있다.
출력값들은 ZERO를 기준으로 100부터 시작해서 1씩 증가된 값이 나왔다.



ZERO에 100이 들어있고 ONE에 105를 넣어보았다.
이때 ZERO에 100이 출력 ONE에 105출력 TWO에는 ONE에서 1이 늘어난 106이 출력이 되었다.

지금까지 확인한 결과를 보면 값이 들어있지 않을때는 0이 초기값으로 들어가고 순서대로 1씩 늘어나지만
값을 지정해서 주면 그 지정값을  가지고 값을 가지고 있지 않는 것은  바로 앞의 값에 영향을  받아 값이 늘어난 것을 볼 수 있다.


이 소스에서 보면 enum  test2를 main 에서 b라는 변수로 선언했다.
이것이 가능한 것은 C는 enum test2를 변수가 아니라  enum type  이기 때문이다.
C에서는  b에 ONE과  105를 각각 넣어서 출력을 해보면 같은 결과가 나온다.



하지만 C++에서  컴파일을 해보면 에러가 난다.
이유는  C에서는 enum을 unsigned int로 인식을 하기 때문에 105를 넣어도 되지만 C++에서는 같은  타입이 아니기에 에러가 발생되는 것이다.

 

728x90