2009년 7월 22일 수요일

enum으로 선언한 변수의 값

enum은 상수 열거형 지시어다.
그 안에 상수정의가 특별한 값에 대입되어 있지 않다면 0부터 차례대로 자연수의 값을 갖는다.
또한, enum{}으로 선언한 변수는 컴파일러에서 16비트로 기억된다. 즉, int16_t로 선언된다.
enum {TIME = 61440}; 으로 하고 컴파일을 하게 되면 "warning: decimal constant is so large that it is unsigned" 라는 주의 메시지가 뜬다. 해당 값이 int16_t 에 담기에는 너무 크다고...
컴파일러는 똑똑해서 자기가 알아서 unsigned로 바꿔준다.
하지만 이게 보기 싫다면 해당 값의 끝에 "U"를 붙여 주면된다.
enum {TIME = 61440U};
이렇게 하면 unsigned라고 미리 알려주므로 warning은 뜨지 않는다. 보다 큰 숫자를 입력하고 싶다면 마찬가지로 해당 값의 끝에 "L"을 붙여 사용하도록 한다.
enum {TIME = 6144000L};

댓글 없음:

댓글 쓰기