Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: chino_r en 22 Febrero 2014, 17:17 pm



Título: algun programador de c me explique
Publicado por: chino_r en 22 Febrero 2014, 17:17 pm
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....


Título: Re: algun programador de c me explique
Publicado por: rir3760 en 23 Febrero 2014, 02:17 am
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 [...] 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.

Estoy 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


Título: Re: algun programador de c me explique
Publicado por: betokscr en 24 Febrero 2014, 05:00 am
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