Die Zahl 17.0 ist eine Realzahl.
Die Zahlen 5, 3 und 4 sind Ganzzahlen.
Der Bruch 5/3 besteht aus zwei Ganzzahlen und wird dann durch eine ganzzahlige Division berechnet, mit 5/3 = 1 (da die Nachkommastellen ignoriert werden).
Damit gilt 17.0 / (5 / 3) * 4 = 17.0 / 1 * 4 = 68.0
So weit die völlig falsche Theorie.
Es steht nämlich ausdrücklich in der Originaldokumentation von C, dass
(a) die Reihenfolge mathematischer Ausdrücke durch den Parser beliebig geändert werden kann (natürlich nur, solange nicht gegen math. Regeln verstoßen wird);
(b) die Typumwandlung ebenfalls beliebig geändert werden kann.
D.h.
Vielleicht rechnet der Compiler zuerst 4*3 = 12, dann 12/5 = 2 (ganzzahlig), dann 17.0*2 = 34.0.
Vielleicht erkennt der Compiler als erstes die Zahl 17.0 als Realzahl und wandelt dann alle weiteren Berechnungen ebenfalls in Realzahlen um, was dann zu 17.0 / (5.0 / 3.0) * 4.0 = 40.8 führt. Dabei kann er die Reihenfolge ebenfall nach Lust und Laune ändern, aber das ist hier sowieso egal.
Tatsache ist, dass Du nicht weißt, was der Compiler macht, und demzufolge kannst Du auch nicht sagen, welches Ergebnis herauskommt. Und demzufolge soltest Du so etwas auch nie programmieren.