I verwirrt bin durch:Warum mehrere Anweisungen in ternärem Operator nicht ausgeführt
#include <iostream>
int main()
{
bool a = true;
int nb = 1;
int nb2 = 2;
a ? nb++, nb2++ : nb--, nb2--;
std::cout << " (nb,nb2) = (" << nb << "," << nb2 << ")";
}
Ergebnis:
(nb,nb2) = (2,2)
Warum ist nb2
nicht gleich 3
?
a) keine Komma-Operator, es sei denn verwenden du brauchst es unbedingt (weil * es böse * ist), b) benutze kein ternäres um Seiteneffe zu produzieren cts - Verwenden Sie Ternär, um nur einen bedingten * Wert * zu erhalten. – vaxquis
@NathanOliver: Die interessante Frage ist: Warum kompiliert das ohne Warnungen? –
@NathanOliver Yeah, ich habe die Waffe wirklich übersprungen. Ich habe die enge Abstimmung zurückgenommen, aber es scheint, dass sie den zugehörigen Kommentar nicht entfernt. – Borgleader