Foros del Web » Programación para mayores de 30 ;) » C/C++ »

entero = matriz[][]; como es posible

Estas en el tema de entero = matriz[][]; como es posible en el foro de C/C++ en Foros del Web. Señores es un gusto saludarles, les comento estoy tratando de entender un código propuesto para mi proyecto de Compiladores pero no entiendo por que no ...
  #1 (permalink)  
Antiguo 01/05/2013, 21:57
 
Fecha de Ingreso: mayo-2013
Mensajes: 1
Antigüedad: 10 años, 11 meses
Puntos: 0
Pregunta entero = matriz[][]; como es posible

Señores es un gusto saludarles, les comento estoy tratando de entender un código propuesto para mi proyecto de Compiladores pero no entiendo por que no se genera un error, o que hace lo siguiente.

/*#define ID 256
#define FIN 257
#define OK -2
#define ERR -1 ESTO SI LO ENTIENDO
#define LETRA 0
#define DIGIT 1
#define MAS 2
#define POR 3
#define FDC 4*/

signed int T_Tran[2][5] = { {1, ERR, OK, OK, OK},
{1, 1, OK, OK, OK} }; //TAMBIEN ESTO
signed int estado = 0;
signed int estant;
int col;
int ch;


estado = T_Tran[estado][col]; //PERO ESTO COMO ES POSIBLE

//Serian tan amables de explicarmelo.
  #2 (permalink)  
Antiguo 02/05/2013, 19:26
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: entero = matriz[][]; como es posible

A la variable estado se le está asignando el valor de T_Tran[estado][col] que equivale a T_Tran[0][0] que es 1, por lo que va a contener el valor 1. Fijate:

Código C:
Ver original
  1. /*      0                       1        */
  2. /*0   1    2   3   4    0  1   2   3   4 */
  3. {{1, ERR, OK, OK, OK}, {1, 1, OK, OK, OK}};

  #3 (permalink)  
Antiguo 03/05/2013, 00:21
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 12 años, 5 meses
Puntos: 3
Respuesta: entero = matriz[][]; como es posible

Quizas a lo que se referia es que la variable col no esta inicializada..., en ningun lado se dijo que col = 0.
  #4 (permalink)  
Antiguo 03/05/2013, 04:20
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: entero = matriz[][]; como es posible

No entiendo porque ponen signed explicítamente... Son ganas de alargar el código *_*
  #5 (permalink)  
Antiguo 03/05/2013, 19:23
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: entero = matriz[][]; como es posible

Si no me equivoco col se inicializa con un valor indeterminado, que al parecer está dentro del rango con respecto al índice máximo de la matriz.
  #6 (permalink)  
Antiguo 04/05/2013, 09:16
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 12 años, 5 meses
Puntos: 3
Respuesta: entero = matriz[][]; como es posible

Cita:
Iniciado por carbon Ver Mensaje
Si no me equivoco col se inicializa con un valor indeterminado, que al parecer está dentro del rango con respecto al índice máximo de la matriz.
Pues no, los int declarados sin asignacion tienen cualquier valor, por que al hacer int col; solo se hace la accion de reservar memoria para almacenar un int en algun lugar de la memoria, pero no se borra lo que habia antes, es decir, hay codigo basura que puede ser interpretado de cualquier manera.
  #7 (permalink)  
Antiguo 04/05/2013, 10:01
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: entero = matriz[][]; como es posible

El int col esta dentro de una función o esta afuera? Si esta afuera se inicializa a cero por defecto. Dentro de una función puede tomar cualquier valor.
  #8 (permalink)  
Antiguo 04/05/2013, 10:34
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: entero = matriz[][]; como es posible

Cita:
Iniciado por ElPatoGarrido Ver Mensaje
Pues no, los int declarados sin asignacion tienen cualquier valor, por que al hacer int col; solo se hace la accion de reservar memoria para almacenar un int en algun lugar de la memoria, pero no se borra lo que habia antes, es decir, hay codigo basura que puede ser interpretado de cualquier manera.
Y que es lo que dije? Se inicializa con un valor indeterminado

Etiquetas: c++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:03.