x += '|' + b, x;
ten sporządza ponieważ przecinek tu działając jako operatora (zamiast rozdzielacza), w którym operand prawy nie ma znaczenia.
Od Wikipedia:
w C i C++ języków programowania, operatora przecinek (reprezentowany przez token) jest operatorem, który ocenia swój pierwszy argument i odrzuca wynik, a następnie ocenia sekundę operand i zwraca tę wartość (i typ).
...
Operator przecinek najniższy priorytet każdego operatora C ...
W x += '|' + b, x;
operator +=
ma wyższy priorytet niż ,
i operator +
ma wyższy priorytet niż +=
, co oznacza, że jest to równoważne z (x += ('|' + b)), x
;
Dodatkowo, jeśli skompilować kod z ostrzeżeniami na, będzie prawdopodobnie otrzyma ostrzeżenie podobne do tego:
warning: right-hand operand of comma has no effect
Firma Awesome pomoc chłopaki, dziękuję za wyjaśnienie tego za mnie –
marginesie: Jeśli skompilować z ostrzeżeniami 'g ++ -Wall' tworzy' ostrzeżenie: prawy operand operatora przecinka nie ma żadnego efektu [-Wunused-value] ' – FDinoff
Powinieneś otrzymać ostrzeżenie kompilatora, jeśli masz włączone ostrzeżenia. Kompilator może zauważyć, że ', x' nic nie robi, co oznacza, że prawdopodobnie jest to błąd. –