J'ai ce comportement très étrange avec un code C++: Cela me donne des résultats différents lors de l'exécution avec et sans rediriger la sortie de l'écran vers un fichier (reproductible en cygwin et linux). Je veux dire, si je reçois le même exécutable et exécutez-le comme ./run
ou exécutez-le comme ./run >out.log
, j'obtiens des résultats différents!La redirection de la sortie d'écran vers un fichier peut-elle changer le résultat d'un code C++?
J'utilise std :: cout pour afficher à l'écran toutes les lignes se terminant par endl; J'utilise ifstream pour le fichier d'entrée; J'utilise ofstream pour la sortie, toutes les lignes se terminant par endl.
J'utilise g ++ 4.
Toute idée de ce qui se passe? MISE À JOUR: J'ai codé en dur les données d'entrée, donc 'ifstream' n'est pas utilisé, et le problème persiste.
MISE À JOUR 2: Ça devient intéressant. J'ai sondé trois variables qui sont calculées d'abord, et c'est ce que je reçois lors de l'utilisation avec et sans rediriger la sortie vers fichier
redirected to file: 0 -0.02 0
direct to screen: 0 -0.02 1.04083e-17
Donc, il y a une différence d'arrondi dans les variables de code avec et sans rediriger la sortie!
Maintenant, pourquoi rediriger interefere avec un calcul interne du code? MISE À JOUR 3: Si je redirige vers/dev/null, j'obtiens le comportement sam en sortie directement à l'écran, au lieu de rediriger vers le fichier.
Quel genre de résultats différents? – djna
Quels sont les résultats différents? –
Qu'est-ce que vous obtenez pour le cas './run> out.log'? – Stewart