• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

코딩중 질문

21.02.19 20:37 작성 조회수 82

0

안녕하세요.

코드작성도중 12번째 줄부터 16번째 줄까지 minutes,seconds,hours를 재정의 할 때 모두 int를 붙여서 코드를 작성했는데, 코딩도중 에러가 발생했습니다. 

앞에서 int로 정의를 했기 떄문에 재정의할 필요가 없어서 다시 지우고 코드를 작성하니 에러가 사라졌습니다.

이미 정의를 했으니 int를 생략하는것은 이해가 되는데 int를 붙였을 때 코딩이 안되는 이유가 궁금합니다.

답변 1

답변을 작성해보세요.

1

안소님의 프로필

안소

2021.02.20

안녕하세요.

해당 강의의 while문 안에서 썼던 minutes,seconds,hours 는 이미 while문 밖에서 정의가 되어있는 기존의 minutes,seconds,hours 변수들의 "값을 바꿔주는 행위"이지 minutes,seconds,hours 라는 변수를 새롭게 만들어주는 행위가 아닙니다. int 를 붙이면 minutes,seconds,hours 라는 변수를 새롭게 정의 (즉 새롭게 만들어주는) 행위인 것이 됩니다. 

구체적인 코드를 첨부 해주지 않으셔서 정확한 에러를 파악하긴 힘들지만 아마 전부 int 를 앞에 붙여주셨다면 minutes 가 아래에 한번 더 등장하니 동일한 이름의 변수를 같은 범위내에 한번 더 정의해서 에러가 발생한 것으로 추측이 되네요. while문 내에서 변수를 새롭게 정의해주는 것 행위 자체는 별 에러가 발생하지 않긴 하더라도 while문 에서 새롭게 정의해준 변수는 그 while문 반복 한번 에서만 생명 주기를 가지는 변수이기 때문에 강의에서 작성한 코드의 의도대로 동작하지 못합니다. 

변수의 영역에 대해서 추후 강의에서 공부하시면 제 답변이 이해가 되실거에요!

일단 그렇게 while문 안에서 int 를 붙여주신 행위는 바깥에서 만든 minutes,seconds,hours 와는 별개이며 이름만 같을뿐인 새로운 변수를 만들어주신 행위라고 생각해주시면 되겠습니다. 그러니 int를 다 붙여주면 while문 바깥의 minutes,seconds,hours 값은 변하지 않게 됩니다. while문 한번의 반복 주기에서만 생명 주기를 가지는, 방금 새로 만든 별개의 그 minutes,seconds,hours 값만 매번 바꿔주는 것이니까요.