개발 소발/개발 C++(기초)
c++ 조건문 switch-case, goto문
우기!
2019. 7. 11. 17:27
switch-case 조건문
if문과 다르게 맞는 조건 뒤에 로직은 모두 동작한다.
멈추고 싶다면 break;를 사용한다.
{}scope를 사용가능하다 if문과 다르게 {}가 없더라도 여러줄 인식이된다.
주의할점
switch문 앞부분에 변수를 선언할 수 있으나 초기화는 못한다.
case문에서 값을 정해줄 수 있다.
{}scope가 없을시 case문에서 선언한 변수는
switch문 앞부분에 선언한 것처럼 적용된다.
#include <iostream>
using namespace std;
enum class Colors
{
BLACK,
WHITE,
RED,
GREEN,
BLUE,
};
void printColorName(Colors c)
{
switch (c) {
//여기에 선언된것과 같다.
//int a;
case Colors::BLACK:
//{}scope가 있으면 내부에서만 적용된다.
int a;
a = 5;
cout << "BLACK";
break;
case Colors::GREEN:
//GREEN이 선택되면 a의 값은 garbage값이 출력된다.
cout << a << endl;
cout << "GREEN";
break;
default:
cout << "X" << endl;
}
cout << endl;
}
int main()
{
printColorName(Colors::BLACK);
return 0;
}
goto
반복문 대신에 과거에 자주사용했다.
어셈블리어로 가면 동작은 거의 같다.
지정한곳으로 가게 명령하는 것이다.
레이블이름을 지어 그위치로 돌아간다.
책갈피로 생각하면된다.
돌아갈곳 지정은 돌아갈곳(이름지정):
돌아가기 작동은 goto 돌아갈곳;으로 한다.
주의할점
지금은 거의 사용하지 않는다.
#include <iostream>
using namespace std;
int main()
{
double x;
//돌아갈곳 설정하기
notGood :
cout << "cin start" << endl;
cin >> x;
if (x < 0.0)//goto문 실행방법
goto notGood;
return 0;
}