Jede Seite des bedingten Operators ist ein Komma -AusdruckC++

Programme in C++. Entwicklerforum
Anonymous
 Jede Seite des bedingten Operators ist ein Komma -Ausdruck

Post by Anonymous »

int ival = (ia != 0)
? ix = get_value(), ia[index] = ix
: ia = new int[sz], ia[index] = 0;
< /code>

Im folgenden Beispiel ist jede Seite des bedingten Operators ein Komma -Ausdruck.
Der Wert des ersten Kommas -Ausdrucks ist ix; Der Wert des zweiten ist 0.
Publisher: Addison Wesley Stanley B. Lippman Josée Lajoie Dritte Ausgabe 26. März 1998 < /p>
< /blockquote>
Was ist wirklich los? Der ternäre Operator?: Hat höhere Vorrang als der Komma -Betreiber. Daher endet der gesamte ternäre Ausdruck bei IA [index] = ix. Alles nach dem nächsten Komma (IA [Index] = 0) ist nicht mehr Teil des ternären Ausdrucks. Das sieht der Compiler: < /p>
int ival = ((ia != 0)
? (ix = get_value(), ia[index] = ix)
: (ia = new int[sz])) ,
ia[index] = 0;
< /code>
Ich habe einen Fehler im Buch C ++ - Primer gefunden. Oder scheint es einfach so? Bitte überprüfen Sie, ob dies korrekt ist.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post