switch 문에서 매개 변수로 enum을 사용하는 코드 조각이 있는데 예상대로 작동합니다.switch 문에서 enum과 char을 사용합니다.
#include <iostream>
typedef enum
{
first=0, second=1, third, fourth, fifth, sixth
}enumValue;
void enumFunction(enumValue val)
{
switch(val)
{
case first : std::cout<<"1\n";
break;
case second : std::cout<<"2\n";
break;
case fifth : std::cout<<"5\n";
break;
default : std::cout<<"No value\n";
}
}
void main()
{
enumValue storeValue;
storeValue = fifth;
enumFunction(storeValue);
}
변수 "storeValue"의 유형을 char로 변경하면 코드는 여전히 이전과 동일한 결과를 제공합니다. 매개 변수가 전달 될 때 코드가 여전히 작동하는 이유를 알 수 없습니다. 다음은 매개 변수를 변경 한 후의 코드입니다.
#include <iostream>
typedef enum
{
first=0, second=1, third, fourth, fifth, sixth
}enumValue;
void enumFunction(char val)
{
switch(val)
{
case first : std::cout<<"1\n";
break;
case second : std::cout<<"2\n";
break;
case fifth : std::cout<<"5\n";
break;
default : std::cout<<"No value\n";
}
}
void main()
{
char storeValue;
storeValue = fifth;
enumFunction(storeValue);
}
enum 대신 char을 사용하면 실행시 비슷한 결과가 나옵니까? 구문 오류없이 두 번째 코드는 어떻게 작동합니까 ??
'char'는 정수형입니다. – juanchopanza
... 또한 열거 형은 int입니다. – alk
범위가 지정되지 않은 열거자는 내부 형식으로 암시 적으로 변환 가능합니다. 또한'void main()'은 유효하지 않습니다. C++과'typedef enum {/*...*/} stuff;은 C-ism입니다. –