2010-08-14 9 views

Antwort

0

(1,2) auswertet zum letzten Ausdruck in der Liste, das heißt 2. Ein anderes Beispiel: (a,b,c) würde c auswerten

Falls Sie eine gebrochene Zahl verwenden möchten, verwenden Sie einen Float/Double-Typ und den Punkt als Dezimaltrennzeichen verwenden: double d = 1.2;

6

in Klammern gibt die Sprache ein Ausdruck kommt. In diesem Fall (b) steht das Komma für den Komma-Operator aus C.

Ohne Klammern gibt die Sprache an, dass Variablendeklarationen durch Kommas getrennt sind. Im Beispiel a erwartet der Compiler (Parser) zusätzliche Variablendeklarationen.

9

int a = 1,2;2 wird als Variablenname behandelt, der nicht mit einer Zahl beginnen kann, daher der Fehler.

int b = (1,2);comma operator wertet die Operanden von links nach rechts und gibt den letzten Ausdruck in der Liste das heißt 2

3

Der Grund in Ihrer ersten Aussage ist int a = 1,2; das Komma nicht als Folge Operator analysiert wird. Es ist Teil einer Deklarationsliste und versucht, eine ganzzahlige Variable mit dem Namen 2 zu instanziieren, die von der Sprache nicht zugelassen wird.

Die Klammern in der zweiten Anweisung int b = (1,2); erzwingen, dass das Komma als Sequenzoperator analysiert wird.

0

Keiner von ihnen ergab mir zu Anfang einen Sinn.

Aber dann erinnerte ich mich an mehrere Operationen in for-Schleifen. ZB:

for (a=1,b=2; a<1; a++) 

Zu wissen, dass ein gültiger Ausdruck ist, und dass Ausdrücke gelten Sprache elemnts, ist meine Schlussfolgerung, dass (1,2) 1 auswertet (tut aber nichts mit ihm), dann auswertet und 2 kehrt 2.

und schließlich:

b = (1,2); 

Was tut, ist zu bewerten 1 und 2 wie zuvor, 2 zurückzukehren, und weisen sie auf b.