Ho il seguente codice:Perché questo codice che utilizza printf e cout non ha l'output previsto?
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
for (int i = 0; i < 3; i++) {
cout << i << " ";
printf("%d ", i);
}
cout << endl;
return 0;
}
i risultati attesi di questo codice è:
0 0 1 1 2 2
ma, invece, esso stampa:
0 1 2
0 1 2
Questo problema si verifica in Compilatore GNU G ++ 4.9.2
Buffer separati? –
@KerrekSB è esattamente questo e non voglio rubare la risposta da te. printf e cout utilizzano buffer separati che vengono svuotati in momenti diversi. Nel caso del codice di cui sopra, il cout è stato probabilmente scaricato in linea e printf è stato svuotato alla fine della chiamata. Sostituisci lo spazio nel printf con qualcos'altro (_) e lo vedrai. – IdeaHat
Aggiungi 'fflush (stdout)'? – Columbo