C++ 코드와 함께 매우 이상한 행동을하고 있습니다 : 화면 출력을 파일로 재지 정하지 않고 (cygwin 및 Linux에서 재생성 가능) 다른 결과를 제공합니다. 내 말은, 을과 같이 실행하고 ./run
처럼 실행하거나 ./run >out.log
처럼 실행하면 결과가 달라집니다.화면 출력을 파일로 리디렉션하여 C++ 코드의 결과를 변경할 수 있습니까?
화면에 출력하기 위해 std :: cout을 사용합니다. 모든 행은 endl로 끝납니다. 입력 파일에 ifstream을 사용합니다. 출력을 위해 ofstream을 사용합니다. 모든 행은 endl로 끝납니다.
나는 g ++ 4.
무슨 일이 일어나고 있는지 어떤 생각을 사용하고?
업데이트 : 입력 데이터를 하드 코딩 했으므로 'ifstream'이 사용되지 않고 문제가 지속됩니다.
업데이트 2 : 흥미 롭습니다. 나는 처음에 계산되는 세 개의 변수를 탐색 할 한, 그리고 내가 그래서 코드 변수의 반올림 차이가있다
redirected to file: 0 -0.02 0
direct to screen: 0 -0.02 1.04083e-17
를 제출하여 출력을 리디렉션하지 않고 사용하는 경우 무엇을 얻을 출력을 리디렉션 할 때 또는 리디렉션하지 않을 때!
이제 리디렉션이 코드의 내부 계산을 간섭하는 이유는 무엇입니까?
업데이트 3 : 내가/dev/null로 리디렉션하면 파일로 리디렉션하지 않고 화면에 직접 출력하는 것처럼 샘 동작을 얻게됩니다.
어떤 결과가 서로 다른가요? – djna
다른 결과는 무엇입니까? –
'./run> out.log'의 경우 어떻게됩니까? – Stewart