SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Alfonsos1 en Jueves 20 de Enero de 2011, 00:10

Título: porque pasa esto??????????
Publicado por: Alfonsos1 en Jueves 20 de Enero de 2011, 00:10
cuando pruevo este codigo me aparece en pantalla "-110", cuando me deberia de aparecer "143"

#include <stdio.h>
#include <cstdlib>

int main()
{
 char runa3[4][4];
 runa3[0][3]=146;
 printf("%d n",runa3[0][3]);
 system("pause");
 return 0;
}

 :brickwall:  :hitcomp:  :brickwall:  :hitcomp:  :brickwall:  :hitcomp:
Título: Re: porque pasa esto??????????
Publicado por: Amilius en Jueves 20 de Enero de 2011, 00:40
Pasa por que es lo que tiene que pasar.
Si quieres que salga 146:
Código: C++
  1.  
  2. #include <stdio.h>
  3. int main()
  4. {
  5.     unsigned char runa3[4][4];
  6.     runa3[0][3]=146;
  7.     printf("%dn", runa3[0][3]);
  8.     return 0;
  9. }
  10.  
  11.  
Título: Re: porque pasa esto??????????
Publicado por: Alfonsos1 en Jueves 20 de Enero de 2011, 00:55
gracias
Título: Re: porque pasa esto??????????
Publicado por: m0skit0 en Jueves 20 de Enero de 2011, 09:50
char -> rango de -128 hasta 127. Si te pasas, te "das la vuelta" (lo que técnicamente se llama desbordamiento u overflow).
unsigned char -> rango de 0 a 255.