2010-06-24 13 views
8

Was bedeutet die Verwendung des zweiten Parameters mit einem Komma im folgenden Code?Was bedeutet neu int [25,2]?

int *num = new int[25,2]; 
+5

Kompiliert das überhaupt? –

+3

Ja, es ist vollkommen legal Code (leider) –

+0

Aber beachten Sie, dass 'new (int [25, 2])' ist kein Gesetz. –

Antwort

18

Das ist die comma operator in Aktion ist: Es wertet es Operand ist und gibt die letzte, in Ihrem Fall 2. ist also, dass gleichwertig mit:

int *num = new int[2]; 

Es ist wahrscheinlich sicher, dass die 25,2 zu sagen Teil war nicht, was beabsichtigt war, es sei denn, es ist eine Trickfrage.

Bearbeiten: Danke Didier Trosset.

+0

Führt den Komma-Operator aus return the first operand oder der letzte? – AraK

+4

Es gibt den letzten zurück –

+1

Das sieht sehr ähnlich aus wie Didiers Antwort .. Haben Sie die gleiche Quelle verwendet, oder denken Programmierer einfach gleich :) – Default

15

Das ist der Komma-Operator in Aktion ist: Es wertet es Operand ist und gibt die letzten ein, in Ihrem Fall 2 ist also, dass gleichwertig mit:

int *num = new int[2]; 
+2

Bitte beachten Sie, dass der Text der Posts auf SO mit einer Lizenz veröffentlicht wird, die eine Zuordnung erfordert. Sie können kopieren und einfügen, aber Sie sollten die Quellen angeben. – avakar

+0

Eugen Dinca hat genau 2 Minuten vor Ihnen die gleiche Antwort geschrieben. Ich bin mir nicht sicher, ob er seine Antwort erneut posten soll, um ein Wort zu korrigieren, ist effizienter (und eleganter), als nur den Fehler aufzuzeigen, damit er seine Antwort korrigieren kann. – ereOn

+0

Ich dachte nicht, dass ich die Antworten anderer ändern könnte. Ich habe den Fehler zuerst auf einen Kommentar hingewiesen, Sie können ihn sehen, und ein paar Minuten später kopierte er seine Antwort, um sie zu korrigieren. Mit meiner Entschuldigung für das nicht korrekte Verhalten. –

11

Sie den Komma-Operator verwenden, das ist Machen Sie den Code etwas, das Sie auf den ersten Blick nicht erwarten würden.

Der Kommaoperator wertet den LHS-Operanden aus, wertet dann den RHS-Operanden aus und gibt ihn zurück. So im Fall von 25, 2 wird es bewerten 25 (nichts zu tun), dann bewerten und 2 zurückkehren, so dass Codezeile entspricht:

int *num = new int[2]; 
-1

// Deklarieren Sie ein eindimensionales Array
int [] array1 = neuer int [5];

// Declare and set array element values 
    int[] array2 = new int[] { 1, 3, 5, 7, 9 }; 

    // Alternative syntax 
    int[] array3 = { 1, 2, 3, 4, 5, 6 }; 

    // Declare a two dimensional array 
    int[,] multiDimensionalArray1 = new int[2, 3]; 

    // Declare and set array element values 
    int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } }; 

    // Declare a array 
    int[][] Array = new int[6][]; 

    // Set the values of the first array in the array structure 
    Array[0] = new int[4] { 1, 2, 3, 4 };