Ruft der folgende Code UB auf?

8

Ruft der folgende Code UB auf?

%Vor%     
Red Hyena 15.01.2010, 13:41
quelle

2 Antworten

6

Ja, das ist Undefiniertes Verhalten , weil Sie versuchen, die zweite Regel zu verletzen.

  

Der Standard besagt, dass

     

1) Zwischen dem vorherigen und dem nächsten Sequenzpunkt darf ein gespeicherter Wert eines Objekts höchstens einmal durch die Auswertung eines Ausdrucks geändert werden.

     

2) Darüber hinaus darf nur auf den vorherigen Wert zugegriffen werden, um den zu speichernden Wert zu bestimmen .

Hinweis : Die Reihenfolge der Auswertung der Operanden von * operator ist unspezifiziert und *p ist nichts als i .

    
Prasoon Saurav 15.01.2010, 13:48
quelle
9

Ja - entweder ++ i oder * p (was i ist) kann zuerst ausgewertet werden.

    
anon 15.01.2010 13:43
quelle

Tags und Links