다음과 같은 코드가 있는데 아주 이상한 행동을합니다. 누구나 왜 그런지 알 수 있나요?C++ 함수 결과 비교
#include <iostream>
long global = 20001;
double foo() {return global/1000.0;}
int main(int,char**) {
if (foo() == foo()) {
std::cout << "true\n";
} else {
std::cout << "false\n";
}
return 0;
}
매번 동일한 결과를 반환하지만 대신 false를 인쇄하므로이 값이 true로 인쇄됩니다.
이
내가 OS의 문제는,하지만 가능성이 다른 OS
시험해보기 : flost epsilon = 0.001f; if (foo() - foo() <엡실론) .... – AdamF
코드를 컴파일하고 'true'응답을 받았습니다. 나는 gcc 4.6.3과 함께 우분투 12.04를 사용하고있다. OS가 중요 할 수있는 것처럼 보입니다. – Kevin
g가있는 Fedora에서 'true'를 얻었습니다. – Octopus