Visual C++ 2010 Express Edition을 사용하여 C++ 프로그래밍 언어로 작성한 .exe 파일을 컴파일하고 실행합니다. C++을 사용하여 루프 기반 논리를 작성하여 사용자에게 입력 할 항목 수를 물어보고 해당 항목에 제한된 질문을합니다. 항목 수 예를 들어, "몇자를 입력 하시겠습니까?"라고 출력하고 싶습니다. 사용자가 대답을 '3'으로 지정하고 int 변수 'entries'에 저장되어 있다고 가정 해 봅시다. 그런 다음 질문을 계속하기 전에 3 번 질문하고 코드의 다음 줄을 계속 진행합니다.Visual C++ - 런타임 검사 실패 # 3 - 변수가 초기화되지 않았습니다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "How many values do you need to enter?: ";
int entries;
cin >> entries;
int offset, number;
string valueName[50];
float valueValue[50];
for (offset = 0; offset < entries; offset++)
{
cout << "Enter " << number << " Value Name: ";
cin >> valueName[offset];
cout << "Enter " << valueName[offset] << "\'s value: ";
cin >> valueValue[offset];
for (number = 1; number <= entries; number++)
{
}
}
char response;
cin >> response;
return 0;
}
을 나는이 간단한 프로그램을 실행할 때 이상하게도, 그것이 내가 값의 이름을 입력 할 때의 0 번째 요소에 삽입 실패 : 여기 내가 뭐하는 거지 설명하는 코드의 블록은, 당신이 이해 바랍니다 valueName [] 배열. 그냥 프로그램의 실행을 일시 중지하고 "Runtime Check Failure # 3 - 변수 번호가 초기화되지 않고 사용 중입니다!"라는 대화 상자가 나타납니다. 이 프로그램에 관한 또 다른 문제점은 꽤 오랫동안이 프로그램을 실행했을 때 "Runtime Check Failure # 3"상자가 나타나지 않았고 숫자가 잘못되었을 때 처음으로 1로 시작했고, 다음 루프가 6으로 점프하고, 다음 루프를 위해 다시 6을 반복합니다!
도와주세요! 나는 온라인으로이 문제를 도둑 맞은 곳을 조사했지만, 문제의 유형에는 적용되지 않는다!
변수가 범위를 벗어 났기 때문에 그렇습니까?
하지만 for 루프 외부에서 선언되었습니다.
제발 도와주세요!
범위를 벗어난 항목이 있으면 컴파일러가 만족스럽지 않습니다. 런타임 오류가 발생하면 컴파일 단계를 통과 한 것입니다. 구문 학적으로 모든 것이 정확합니다. – Mahesh
디버거에 메시지가 도착했을 때 디버깅을 중단하면 초기화되지 않은 변수를 사용하여 줄 오른쪽에 있습니다. 또한, 빌드는 경고를 주어야합니다 :'경고 C4700 : 초기화되지 않은 지역 변수 'number'used'이 모든 것은 여러분에게 문제가 어디서 어디서 발생했는지 정확하게 알려줍니다. –
당신의 통찰력에 대해 Mahesh와 Michael Burr에게 감사드립니다. 당신과 다른 사람들의 협조 덕분에 문제가 해결되었음을 알려드립니다. 고맙습니다. –