У меня очень странное поведение с кодом C ++: он дает разные результаты при работе с перенаправлением вывода экрана в файл и без него (воспроизводится в cygwin и linux). Я имею в виду, что если я получу такой же исполняемый файл и запустлю его как ./run
или запусту как ./run >out.log
, я получу другие результаты!
Я использую 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, я получаю поведение sam как вывод непосредственно на экран вместо перенаправления в файл.