본문 바로가기

내가 꾸는 꿈

switch구문, 변수의 유효범위 [노베이스 게임개발 10일차]

반응형

오늘은 챕터 2를 시작하기 전 꼭 알아야 할 개념들 몇 가지를 알아보았다.

 

 

먼저 switch구문이다

if와 같은 제어문이지만 if와 다른 점이 있다.

if는 개발자들이 사용하기 쉽지만 다양한 퍼포먼스를 보여줄 수 없고

반대로 switch구문은 사용하기는 어렵지만 다양한 퍼포먼스를 보여줄 수 있다.

어떤 식으로 더 좋은지는 c++을 공부할 때 더 자세하게 공부할 예정이다.

 

switch구문을 더 살펴보면 if절과 비슷하게 조건이 있는데 case뒤에 정수값으로 결정된다

7번째 줄에 value 괄호에 값에 따라 case ? 의 뒤의 내용을 실행하게 되고 break에 의해 switch구문을 탈출하게 된다.

그림에서는 value가 0이므로 case 0 가 실행되어 "value의 값은 제로입니다"가 출력이 되고 그 후 break에 의해 탈출이 된 모습이다.

그렇다면 case 0에서의 break를 제거한다면 어떻게 코드가 진행될까?

 

먼저 case 0의 내용은 정상적으로 출력될 것이다 하지만 break에 의한 탈출이 일어나지 않으므로 case 1의 내용을 출력 후 case 1의 break에 의해 탈출이 일어날 것이다.

 

 

그다음으로는 변수의 유효범위에 대해 배웠다.

변수는 메인함수 내부에 선언할 수도 있지만 메인함수 브라켓 밖에서 선언될 수도 있는데

이경우에 변수는 전체적인 유효범위를 갖는다.

 

그림과 같이 value는 모든 브라켓 밖에서 선언되었으므로 전체적인 유효범위를 지닌다.

그래서 void foo라는 함수 안에서 value가 사용될 수 있었으며 또 다른 함수인 메인함수에서 value값을 출력할 수 있다.

 

이때 void는 함수가 return을 하지 않아도 되게 하는 데이터 타입이다.

서로 다른 함수에서 value가 쓰였지만 value가 브라켓 밖에서 선언되었기 때문에 정상적으로 출력이 된 모습이다.

 

변수의 유효범위는 또한 자신과 가장 가까운 브라켓에서 유효범위를 갖는다.

 

5번째 줄의 value는 메인함수의 브라켓 안에서 선언되었고

7번째 줄의 value는 새로 생성된 브라켓 안에서 선언되어 있다.

 

그랬을 때 8번의 출력문은 7번의 value에 의해 200으로 재정의 되었으므로 200을 출력하지만

그다음으로 오는 10번의 출력문은 7번의 value밖에 있는 문장이기 때문에 받지 않고 5번의 value를 받아서

100의 값을 출력하게 된다.

 

 

후기:

이번 강의는 챕터 2가 시작되기 전 꼭 알아야 할 개념을 알아보았는데 다음시간부터는 본격적으로 챕터 2를 시작하게 될 것 같다.

 

 

*본 포스팅은 학생의 입장에서 쓴 글로 정확하지 않을 수 있으며 댓글로 피드백해 주시면 감사하겠습니다.

클래스 101 개발자 라라 님의 강의를 통해 학습한 내용을 기반으로 두고 있습니다.

반응형