algun programador de c me explique

Iniciado por chino_r, 22 Febrero 2014, 17:17 PM

0 Miembros y 1 Visitante están viendo este tema.

chino_r

Buenos dias estoy iniciandome en c de forma autodidacta y mi pregunta es la siguiente....
Cuando yo escribo por ejemplo:
                                              Printf("escriba un numero\n");
                                              Scanf("%d",&tabla);
El signo "&" se que se utiliza para que la computadora guarde en ese espacio algo, sin embargo en mi computadora cuando ejecuto salta un error en la memoria diciendome la instruccion x.02b...... hace referencia a la memoria 0.x23f....... cuando me olvido de usarlo, no deberia indicarmelo el compilador a la falta de " & " ?
Y cuando lo uso el programa se ejecuta correctamente. Estoy usando el dev c++ y mi computadora es una i5 con windows 7, desde ya muchas gracias....

rir3760

Cita de: chino_r en 22 Febrero 2014, 17:17 PMEl signo "&" se que se utiliza para que la computadora guarde en ese espacio algo, sin embargo en mi computadora cuando ejecuto salta un error [...] cuando me olvido de usarlo, no deberia indicarmelo el compilador a la falta de " & " ?
Depende del compilador y la forma en que se ejecute este.

Cita de: chino_r en 22 Febrero 2014, 17:17 PMEstoy usando el dev c++ y mi computadora es una i5 con windows 7, desde ya muchas gracias....
Si recuerdo bien Dev-C++ utiliza como compilador una versión de gcc ya sea MinGW o CygMing. Con ellos debes utilizar las opciones "-ansi -pedantic -Wall -O" para que el compilador se ejecute en el modo mas estricto posible y, en el caso de CygMing, este genera mensajes de advertencia si se te olvida utilizar el operador "&".

Busca en el menú las opciones para configurar el compilador, debe ser de titulo "Opciones de linea de comandos" (o algo similar, no lo tengo instalado) y ahí las agregas.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

betokscr

El & si bien recuerdo es el operador de dirección, este operador se tiene que utilizar explicitamente para recibir variables de tipo int, ya que a diferencia de los arrays char por ejm, los primeros entregan por default el dato y no la direccion, la cual es necesaria para la funcion scanf.
Me confunde que digas que el programa se ejecuta correctamente, no dudo que algun compilador permita usar scanf para recibir un entero sin direccionarlo usando un analisis poco estricto como dice el compañero rir3760, pero me extraña que funcione bien.

Saludos