una transpuesta programacion matriz matrices llenado identidad espejo calculadora ats 3x3 2x3 c++ arrays floating-point initialization

programacion - matriz transpuesta c++



Inicialización de la matriz flotante de C++ (2)

No, establece todos los miembros / elementos que no se han establecido explícitamente en su valor de inicialización predeterminado, que es cero para los tipos numéricos.

Posible duplicado:
C y C ++: inicialización parcial de estructura automática

Mientras leía el código completo , encontré un ejemplo de inicialización de matriz de C ++:

float studentGrades[ MAX_STUDENTS ] = { 0.0 };

No sabía que C ++ podía inicializar la matriz completa, así que la probé:

#include <iostream> using namespace std; int main() { const int MAX_STUDENTS=4; float studentGrades[ MAX_STUDENTS ] = { 0.0 }; for (int i=0; i<MAX_STUDENTS; i++) { cout << i << " " << studentGrades[i] << ''/n''; } return 0; }

El programa dio los resultados esperados:

0 0 1 0 2 0 3 0

Pero cambiando el valor de inicialización de 0.0 a, digamos, 9.9 :

float studentGrades[ MAX_STUDENTS ] = { 9.9 };

Dio el interesante resultado:

0 9.9 1 0 2 0 3 0

¿La declaración de inicialización establece solo el primer elemento de la matriz?


Si usa cualquier cosa que no sean llaves vacías, solo inicializará las primeras N posiciones con ese valor y todas las demás se inicializarán con 0. En este caso, N es el número de argumentos que pasó a la lista de inicialización, es decir,

float arr1[10] = { }; // all elements are 0 float arr2[10] = { 0 }; // all elements are 0 float arr3[10] = { 1 }; // first element is 1, all others are 0 float arr4[10] = { 1, 2 }; // first element is 1, second is 2, all others are 0