inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

5.7 나머지 연산자

코딩중 질문

151

조건희

작성한 질문수 3

0

안녕하세요.

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

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

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

c

답변 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