Was ist ein kommaseparierter Satz von Zuweisungen?

8

Ich bemerkte in einer Routine

%Vor%

Warum funktioniert es?

Was macht es?

    
j riv 04.12.2010, 09:30
quelle

3 Antworten

9

Ein Kommaoperator ist ein Sequenzpunkt: Jeder durch Kommas getrennte Ausdruck wird von links nach rechts ausgewertet. Das Ergebnis hat den Typ und Wert des rechten Operanden. Funktional entspricht Ihr Beispiel (viel besser lesbar?):

%Vor%

Hier ist ein weiteres Beispiel, das der Standard für den Kommaoperator (6.5.17) vorsieht:

  

Im Funktionsaufruf

%Vor%      

Die Funktion hat drei Argumente, die   der zweite hat den Wert 5.

    
icecrime 04.12.2010, 09:33
quelle
8

Aus Wikipedia:

In den C- und C ++ - Programmiersprachen ist der Komma-Operator (dargestellt durch das Token) ein binärer Operator, der seinen ersten Operanden auswertet und das Ergebnis verwirft, den zweiten Operanden dann auswertet und diesen Wert (und Typ) zurückgibt. Der Komma-Operator hat die niedrigste Priorität eines C-Operators und fungiert als Sequenzpunkt.

Die Verwendung des Kommatokens als Operator unterscheidet sich von der Verwendung in Funktionsaufrufen und Definitionen, Variablendeklarationen, Aufzählungserklärungen und ähnlichen Konstrukten, wo es als Trennzeichen fungiert.

In diesem Beispiel ist das unterschiedliche Verhalten zwischen der zweiten und dritten Zeile darauf zurückzuführen, dass der Komma-Operator eine niedrigere Priorität als die Zuweisung hat.

%Vor%

Link: Ссылка

    
Jesus Oliva 04.12.2010 09:33
quelle
0

Warum sollte es nicht funktionieren? Er setzt % , to_hex(*pstr >> 4) , to_hex(*pstr & 15) auf sequentiellen Speicherblock, der von pbuf adressiert wird. Der entsprechende Code kann der folgende sein:

%Vor%     
khachik 04.12.2010 09:40
quelle

Tags und Links