[ Foro de C ]

Problema con long int

17-Oct-2010 19:15
Diego Fernndez
5 Respuestas

Intento hacer el ejercicio del apartado 2 , pero el programa me dá un error después de introducir la primera variable:


#include<stdio.h>

main()
{
      long int num1, num2, resultado;
      resultado = num1 * num2;
      scanf("%d", num1);
      scanf("%d", num2);
      printf("%d", resultado);
      getchar();
}


que puede ser?

gracias


17-Oct-2010 21:14
Carlos Ruiz

Holap:

El error consiste en que asignas el valor a la variable "resultado" ANTES de que num1 y num2 hayan guardado el valor ingresado por el usuario:

Para corregirlo sólo basta cambiar de lugar la línea donde "resultado" guarda num1*num2, así:


#include<stdio.h>

main()
{
     long int num1, num2, resultado;
     scanf("%d", num1);
     scanf("%d", num2);
     resultado = num1 * num2;
     printf("%d", resultado);
     getchar();
}


Ahora sí debería funcionar...

Saludooos :P


17-Oct-2010 22:49
Diego Fernndez

Sigue sin funcionar. Despues de introducir la primera variable vuelve a poner error. Esta es una captura de mi pantalla:
http://img163.imageshack.us/img163/2136/screenshot1710201022454.png

saludos


17-Oct-2010 23:51
Carlos Ruiz

Olvidé un pequeño detalle:

Debes agregar el símbolo "&" a las variables en la función "scanf();"... así:

#include<stdio.h>

main()
{
     long int num1, num2, resultado;
     scanf("%d", &num1);
     scanf("%d", &num2);
     resultado = num1 * num2;
     printf("%d", resultado);
     getchar();
}

Ahora sí que sí... xD

Saludooos :P


18-Oct-2010 09:08
Diego Fernndez

Ahora si que funciona. Gracias :)

saludos


19-Oct-2010 09:57
Nacho Cabanes (+30)

Un pequeño detalle: "%d" se usa para números "int" (enteros normales), no para "long int".

Si quieres que tu fuente trabaje con "long int" (enteros de mayor tamaño), deberías usar "%ld", tanto en "scanf" como en "printf", o puedes tener problemas cuando introduzcas datos grandes (mayores que un entero normal, por ejemplo un número de 11 cifras).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)