¿Cuál es el significado de usar el segundo parámetro con una coma en el código siguiente?¿Cuál es el significado de new int [25,2]?
int *num = new int[25,2];
¿Cuál es el significado de usar el segundo parámetro con una coma en el código siguiente?¿Cuál es el significado de new int [25,2]?
int *num = new int[25,2];
Esa es la comma operator en acción: se evalúa es el operando y devuelve el último, en su caso 2. Así que es equivalente a:
int *num = new int[2];
Es probablemente seguro decir que el 25,2
parte no era lo que se pretendía, a menos que sea una pregunta capciosa.
Editar: gracias Didier Trosset.
Ese es el operador coma en acción: se evalúa es el operando y devuelve el última uno, en su caso 2. De modo que es equivalente a:
int *num = new int[2];
Tenga en cuenta que el texto de las publicaciones en SO se publica con una licencia que requiere atribución. Puede copiar y pegar, pero debe citar las fuentes. – avakar
Eugen Dinca publicó exactamente la misma respuesta 2 minutos antes que usted. No estoy seguro si volver a publicar su respuesta solo para corregir una palabra es más eficiente (y más elegante) que simplemente señalar el error para que pueda arreglar su respuesta. – ereOn
No pensé que podría editar las respuestas de otros. De hecho, primero señalé el error en un comentario, puedes verlo, y un par de minutos después de copiar-pegar su respuesta para corregirlo. Con mis disculpas por el comportamiento no correcto. –
Está utilizando el operador coma, que es haciendo que el código haga algo que quizás no esperes a primera vista.
El operador de coma evalúa el operando LHS, luego evalúa y devuelve el operando RHS. Así, en el caso de 25, 2
se evaluará 25
(no hacer nada) y luego evaluar y volver 2
, por lo que esa línea de código es equivalente a:
int *num = new int[2];
// declarar una matriz unidimensional
int [] array1 = nuevo 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 };
¿Eso incluso compila? –
Sí, es un código perfectamente legal (lamentablemente) –
Pero tenga en cuenta que 'new (int [25, 2])' no es un código legal. –