The produced value is not the expected.
The code: #include <iostream> #include <limits> int main() { using namespace std; long double x= numeric_limits<unsigned long>::max(); cout<< fixed; for(unsigned i= 0; i< 10; ++i) { cout<< x<< endl; ++x; } cout<< endl<< x<< endl<< numeric_limits<unsigned long>::max()<< endl; } It produces: j...@john-laptop:~/Projects/anjuta/cpp/src$ g++ -ansi -pedantic-errors -Wall main.cc -o foobar j...@john-laptop:~/Projects/anjuta/cpp/src$ ./foobar 18446744073709551615.000000 18446744073709551616.000000 18446744073709551616.000000 18446744073709551616.000000 18446744073709551616.000000 18446744073709551616.000000 18446744073709551616.000000 18446744073709551616.000000 18446744073709551616.000000 18446744073709551616.000000 18446744073709551616.000000 18446744073709551615 j...@john-laptop:~/Projects/anjuta/cpp/src$ -- Summary: Value increment problems Product: gcc Version: 4.3.3 Status: UNCONFIRMED Severity: critical Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ivranos at freemail dot gr GCC build triplet: Ubuntu Linux Desktop Edition 9.04 x64 GCC host triplet: Ubuntu Linux Desktop Edition 9.04 x64 GCC target triplet: Ubuntu Linux Desktop Edition 9.04 x64 ("Target: x86_64- linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40407