Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: elkiy en 26 Marzo 2013, 00:50 am



Título: problema en simple codigo
Publicado por: elkiy en 26 Marzo 2013, 00:50 am
hola tengo un problema en este codigo:

Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. int main()
  6. {
  7. int numerouno;
  8. int numerodos;
  9. int resultado;
  10.  
  11. numerouno = 2;
  12. numerodos = 1;
  13. resultado = 0;
  14.  
  15.  
  16. while (true)
  17. {
  18. resultado = numerouno *  numerodos;
  19. numerodos = resultado;
  20. cout << resultado << endl;
  21. }
  22.  
  23. return 0;
  24. }

esto es lo que me dice:

Citar
1>------ Operación Generar iniciada: proyecto: ejercicios, configuración: Debug Win32 ------
1>  a.cpp
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: símbolo externo _WinMain@16 sin resolver al que se hace referencia en la función ___tmainCRTStartup
1>C:\Documents and Settings\Administrador\Mis documentos\Visual Studio 2010\Projects\ejercicios\Debug\ejercicios.exe : fatal error LNK1120: 1 externos sin resolver
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========


Título: Re: problema en simple codigo
Publicado por: avesudra en 26 Marzo 2013, 00:59 am
Has creado un proyecto WIN32 y al estar intentando buscar la función principal(es la misma que el main pero cuando se va a hacer un programa de ventanas con la API de Windows):
Código
  1. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);
No la encuentra y te lanza un error, crea un proyecto de tipo consola y pega el mismo código, verás como funciona.


Título: Re: problema en simple codigo
Publicado por: elkiy en 26 Marzo 2013, 01:07 am
Has creado un proyecto WIN32 y al estar intentando buscar la función principal(es la misma que el main pero cuando se va a hacer un programa de ventanas con la API de Windows):
Código
  1. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);
No la encuentra y te lanza un error, crea un proyecto de tipo consola y pega el mismo código, verás como funciona.

sabes porque me imprime solo ceros?


Título: Re: problema en simple codigo
Publicado por: avesudra en 26 Marzo 2013, 01:16 am
Sí, cuando el programa va aumentando el valor en memoria de las variables, llega un momento según su cantidad en bits(8,16,32,64) en el cual estas llegan al punto de partida y vuelven a ser 0(o no, en este caso coincide ya que podría no coincidir si multiplicas en vez de aumentar), entonces cuando la variable numerodos sea 0, el resultado será 0 y todo se pondrá a 0.Puedes comprobarlo con este mismo código:
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. int main()
  6. {
  7.    int numerouno;
  8.    int numerodos;
  9.    int resultado;
  10.  
  11.    numerouno = 2;
  12.    numerodos = 1;
  13.    resultado = 0;
  14.  
  15.  
  16.    while (numerodos != 0 )
  17.    {
  18.        resultado = numerouno *  numerodos;
  19.        numerodos = resultado;
  20.        cout << resultado << endl;
  21.    }
  22.  
  23.    return 0;
  24. }
Lo que pasa es que llega a ese valor tan rápido que solo ves 0 y no ves los valores que ves con este programa.