enum
•
역할
◦
문자열이 정수형 상수를 대신하도록 한다.
→ 데이터를 프로그래머 입장에서 해설할 수 있게 함
•
형식
enum 태그 { 문자열1, 문자열2, ...};
enum 태그 { 문자열1 = 초기값, 문자열2, ...};
C
복사
◦
초기값이 없으면 0부터 1씩 증가한 값으로 설정
◦
초기값이 있으면 설정된 값에서부터 시작하여 1씩 증가한 값으로 설정
•
선언 형식
enum 태그 {ZERO, ONE, TWO};
enum 태그 변수명;
변수명 = ONE;
'enum형 변수에는 상수 대신 정의한 enum 문자열만 사용'
C
복사
•
일반적인 enum 형 변수 사용 예
// 일반적인 enum 형 변수 사용 예
#include <stdio.h>
#include <stdlib.h>
enum COUNT{ZERO, ONE, TWO};
int main(void){
enum COUNT ncount;
ncount = ONE;
printf("%d\n", ncount);
return 0;
}
C
복사
•
typedef를 적용한 enum 형 변수 사용 예
// typedef를 적용한 enum형 변수 사용 예
#include <stdio.h>
typedef enum _COUNT{ONE =1, TWO, THREE} COUNT;
int main(void){
COUNT ncount1, ncount2, ncount3;
ncount1 = ONE;
ncount2 = TWO;
ncount3 = THREE;
printf("%d %d %d\n", ncount1, ncount2, ncount3);
return 0;
}
C
복사
goto 및 레이블 문
•
역할
제어를 레이블이 있는 위치로 이동시켜 실행하게 함
•
레이블 lavel
제어를 옮길 위치를 나타냄
•
goto문 주의 사항과 사용 예
◦
많은 goto문은 제어를 복잡하게 한다.
break와 return 문 사용
◦
중첩된 for문을 빠져 나갈 때 goto문 사용
break는 for문 한 단계만 빠져나가므로
•
형식
◦
'레이블명 :'
◦
'goto 레이블명;'
int main(){
...
if(m ==3){
goto STOP;
}
STOP:
printf("end\n");
}
C
복사
•
소스코드
#include <stdio.h>
#include <stdlib.h>
int main(void){
int i, j;
for(i = 0; i < 5; i++){
for(j = 0; j < 2; j++){
if(i==3){
goto STOP;
}else{
printf("i : %d\tj : %d\n", i, j);
}
}
}
STOP:
printf("종료\n");
return 0;
}
C
복사
union 공용체
•
역할
기억 장소를 서로 다른 데이터형이 공유
사용은 구조체와 동일하다.
•
형식
union 태그{
int nvar;
char cvar[4];
};
C
복사
•
union 공용체 예
#include <stdio.h>
union DATA{
struct _IP{int a1, a2, a3, a4;} IpPart;
int nIp[4];
};
int main(void){
union DATA Data;
printf("ip를 입력하세요 : ");
scanf("%d %d %d %d", &Data.nIp[0], &Data.nIp[1], &Data.nIp[2], &Data.nIp[3]);
printf("%d.%d.%d.%d\n", Data.IpPart.a1, Data.IpPart.a2, Data.IpPart.a3, Data.IpPart.a4);
return 0;
}
C
복사