x += '|' + b, x;
Dies kompiliert, da das Komma wird hier als Operator wirkt (statt einem Separator), wo der rechte Operand keine Wirkung.
Von Wikipedia:
Im C und C++ Programmiersprachen, die Komma-Operator (durch das Token dargestellten) ist ein binärer Operator, der seinen ersten Operanden auswertet und verwirft das Ergebnis, und wertet dann die zweite Operand und gibt diesen Wert (und Typ) zurück.
...
der Komma-Operator hat die niedrigste Priorität irgend C Operator ...
In x += '|' + b, x;
, Betreiber +=
hat eine höhere Priorität als ,
und Betreiber +
hat eine höhere Priorität als +=
, was bedeutet, dass es zu (x += ('|' + b)), x
gleichwertig ist;
Außerdem, wenn Sie Ihren Code mit Warnungen auf kompilieren, werden Sie wahrscheinlich eine Warnung ähnlich wie diese erhalten:
warning: right-hand operand of comma has no effect
Ehrfürchtig Hilfe Jungs, vielen Dank für diese –
Side Hinweis für mich Aufräumen: Wenn Sie kompilieren mit Warnungen 'g ++ -Wall' erzeugt 'warning: rechter Operand des Komma-Operators hat keine Wirkung [-Wunused-value]' – FDinoff
Sie sollten eine Compiler-Warnung erhalten, wenn Sie Warnungen aktiviert haben. Der Compiler kann erkennen, dass ', x 'nichts tut, was bedeutet, dass es wahrscheinlich ein Fehler ist. –