나는 다음과 같은 코드가 있습니다코드 블록 잘못된 C++ 출력
#include <iostream>
using namespace std;
Sum (int a, int b)
{
int x = a - b;
//cout << x << " \n";
return x;
}
int main()
{
int s1 = Sum(3, 6);
cout << s1;
return 0;
}
시스템 정보 : 승 7 SP1의 64 궁극적 인/Professional 또는 윈 8.1 64 코드 블록 16.01는 MinGW 디버거 이름 및 버전 : GNU gdb를을 (GDB) 7.6.1 컴파일러 : GNU GCC 컴파일러
이 코드는 아무 문제없이 컴파일되지만 문제는 오류입니다.
1) 함수 합계 http://cpp.sh/에 반환 값이 없습니다.이 때문에 컴파일하지 못하게합니다.
2) "return x"를 쓸지라도 변수의 s1 값은 -3입니다.
그것은 어떻게 든 x
마다의 값을 전달하지만 위의 cout
문을 주석을 해제하는 경우는 "return x
는"모든 것이 예상대로 운동을 시작, 도대체 무슨 :) ->s1
은 임의의 값을 가질 때 더 return 문 없다 함수 호출에 사용되기 전에 초기화되지 않았으므로 그 자리에 있고 return
이있을 때 -3입니다.
저는 이것을 3 대의 컴퓨터에서 시도해 보았습니다. 모두 동일한 동작을 보입니다. 그래서 나는 기계가 문제라고 생각하지 않는다. 다른 컴파일러를 사용해 보았지만 제대로 구성했는지, 디버거가 올바르지 않은지 잘 모르겠습니다. 나는 시도했다 볼랜드 C++과 디지털 화성. 볼랜드은 codeblocks가 지원하는 5.5 대신 새 버전 인 10.1을 가지고 있으며 새로운 버전을 만들 수 없습니다. 이것이 컴파일러 또는 프로그램 문제인지 여부를 모르겠습니까?
저는 C++을 배우려고하는데 이것은 매우 짜증납니다. 우리 선생님은 같은 소프트웨어를 수업 중에 사용하고 있지만 리눅스에 완벽하게 작동합니다.
Off topic : 여기에 줄 번호가있는 코드를 삽입 할 수있는 방법이 있습니까? 여기에 첫 번째 게시물 그래서 난 아직도이 :).
감사합니다.
더 엄격한 컴파일러 옵션을 사용하십시오. – juanchopanza
어떤 버전의 GCC를 사용하고 있습니까? 왜냐하면 당신은 C++ 컴파일러의 어떤 버전으로도 컴파일하면 안된다고 말했기 때문입니다. –
질문은 무엇입니까? 잘못된 코드가 정의되지 않은 이유는 무엇입니까? – Fureeish