해결된 질문
작성
·
126
·
수정됨
0
안녕하세요 강사님
섹션 12 반복문 필수 실습 문제 별 찍기 관련해서 질문있습니다.
변수 i=0; 초기화를 맨위나 while문 바로 위에 선언하면 실행이 잘되는데
변수 i=0; 초기화를 맨위나 while문 바로 위에 둘 다 선언하면 if 문까지만 실행이되고 그 아래 while문은 실행되지 않을까요?
그런데 또 맨위쪽과 while문 바로 위 모두 변수를 한번씩 선언하고 코드 실행 후 맨위나 while문 바로 위에 둘 다 선언했더니 정상적으로 작동이 됩니다
마지막으로 원래 return 0; 을 main함수 맨 밑에만 주로 썼는데 강사님께서 이 문제에서는 return 0;을 if 문 끝날때 쯤에도 한번 쓰셨는데 이유를 알 수 있을까요?
솔직히 return 0;의 의미를 0의 값을 반환해서 최종적으로 함수를 실행되게 한다는 것 빼고 확실하게 모르겠습니다.
답변 2
0
mail() 함수에서 return 0; 구문이 등장하는 것은 더 이상 프로그램을 실행하지 않고 정상종료되는 것을 의미합니다. C언어에서 main() 함수는 프로그램의 시작이자 끝이라 하겠습니다. 그리고 변수 i에 관한 질문은 그 자체에 오류가 있습니다. 한 스코프 내부에서 이름이 같은 변수를 중복 선언하는 것은 C언어 문법에서 허용하지 않습니다. 그러므로 컴파일에 실패한 마지막 성공 빌드를 수행함으로써 같은 결과 혹은 비슷한 결과를 보게 된 것이 아닌가 추측 됩니다. 프로젝트를 완전히 다시 빌드해 정상적으로 컴파일이 되는 것이 확실한지 다시 한 번 확인해보시기 바랍니다. 감사합니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용에 따르면, C 프로그래밍 언어에서 변수 i
의 초기화 위치와 return 0;
의 사용에 대한 질문으로 보입니다. 구체적으로 int i = 0;
선언 위치가 프로그램 실행에 어떤 영향을 미치는지, 그리고 return 0;
의 의미와 사용 위치에 대한 궁금증을 가지고 계신 것으로 해석됩니다.
변수 i의 초기화 위치: C 언어에서 변수의 선언 위치는 그 변수가 사용될 수 있는 범위(scope)를 결정합니다. 함수의 시작 부분에 변수를 선언하면 해당 함수 전체에서 변수를 사용할 수 있습니다. while문 바로 위에 변수를 다시 선언한다면, 그것은 새로운 변수를 선언하는 것으로, 같은 이름의 전역 변수나 다른 범위의 변수를 “shadowing”(가림) 할 수 있습니다. 하지만, 제시하신 코드에서는 int num = 0, i = 0;
과 int i = 0;
의 두 번째 선언이 같은 범위 내에 있기 때문에, 이는 중복 선언으로 코드상 문제가 있을 수 있습니다. 컴파일러에 따라 경고 또는 오류로 처리될 수 있으며, 일반적으로는 변수를 한 번만 선언하고 필요에 따라 값을 초기화하는 것이 좋습니다.
return 0;의 사용과 의미: return 0;
은 프로그램이 성공적으로 실행되었음을 운영체제에 알리기 위해 사용됩니다. main
함수에서 return 0;
을 사용하는 것은 일반적인 관례입니다. if
문 끝에서 return 0;
을 사용한 건, 특정 조건(예: 잘못된 입력)에서 프로그램을 종료시키기 위함일 수 있습니다. 즉, 조건이 충족될 때 프로그램을 바로 종료시키고, 그렇지 않은 경우 다음 코드를 계속 실행하려는 의도로 해석할 수 있습니다.
질문하신 내용과 직접적으로 연관된 내용을 찾지 못했으나, "필수 실습문제 '*' 출력놀이 응용 부분 관련 질문"
에서 유사한 주제(별 출력과 반복문 사용)를 다루고 있으므로 참고할 수 있을 것 같습니다. 해당 링크는 필수 실습문제 ‘*’ 출력놀이 응용 부분 관련 질문에서 확인 가능합니다. 이 자료는 별 찍기 문제에 대한 반복문 사용 예시를 제공하고 있어, 현재 질문하신 내용과 관련이 있을 수 있습니다. 그러나 정확한 해답이 아닐 수 있으니 참고 자료로만 활용하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.