코딩중 질문
151
작성한 질문수 3
안녕하세요.
코드작성도중 12번째 줄부터 16번째 줄까지 minutes,seconds,hours를 재정의 할 때 모두 int를 붙여서 코드를 작성했는데, 코딩도중 에러가 발생했습니다.
앞에서 int로 정의를 했기 떄문에 재정의할 필요가 없어서 다시 지우고 코드를 작성하니 에러가 사라졌습니다.
이미 정의를 했으니 int를 생략하는것은 이해가 되는데 int를 붙였을 때 코딩이 안되는 이유가 궁금합니다.
답변 1
1
안녕하세요.
해당 강의의 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 값만 매번 바꿔주는 것이니까요.
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
47
3
main 함수에서 왜 int만 선언이 되는걸까요
1
53
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
53
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
46
1
프로토타입과 함수간의 인자 불일치
1
72
2
12.12 헤더 관련 질문
1
59
2
Visual Studio Community 2026 사용 문의
1
134
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
59
2
getchar(), putchar()
1
92
3
강의자리ㅛ
1
78
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
112
2
소스파일안에 여러 파일
1
74
2
F5와 F7의 차이
1
75
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
68
1
Step over 기능 문의
1
52
2
2.6 강의 따옴표 출력 규칙 문의
1
74
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
60
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
64
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
53
2
11.5 코드 구현
1
67
2





