TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Sebas1010 en 17 de Septiembre de 2022, 12:56:01

Título: Duda en C
Publicado por: Sebas1010 en 17 de Septiembre de 2022, 12:56:01
Buenas tardes, les consulto sobre una linea de un prgrama, estoy aprendiendo programacion pero me falta mucho jeje.
Mi consulta que tambien les puede sacar dudas a otros usuarios:

 Time[6] =  hours   / 10 + '0';          // Guardamos las decenas de la variable "hours" en la posición 6 del arreglo "Time".
 Time[7] =  hours   % 10 + '0';          // Guardamos las unidades de la variable "hours" en la posición 7 del arreglo "Time".

Para que le suma "+'0' " que tambien lo vi en otro programas tambien.

Saludos espero no molestar
Título: Re:Duda en C
Publicado por: DominusDRR en 17 de Septiembre de 2022, 16:37:40
Buenas tardes, les consulto sobre una linea de un prgrama, estoy aprendiendo programacion pero me falta mucho jeje.
Mi consulta que también les puede sacar dudas a otros usuarios:

 Time[6] =  hours   / 10 + '0';          // Guardamos las decenas de la variable "hours" en la posición 6 del arreglo "Time".
 Time[7] =  hours   % 10 + '0';          // Guardamos las unidades de la variable "hours" en la posición 7 del arreglo "Time".

Para que le suma "+'0' " que tambien lo vi en otro programas tambien.

Saludos espero no molestar

Yo entendería que le sumas '0' es porque lo conviertes es ASCII. Me explico:

Digamos que tienes en hours 13 (decimal)

Por lo tanto qne  Time[6]  tendrías 1 y en  Time[7] tendrías 3.

Pero muchas veces para representar un número en una pantalla, o en algún otro medio, necesitas mostrar su valor en ASCII.

El ASCII del número 0 es 0x30, del número 1 es 0x31, del número 2 es 0x32, etc., hasta llegar a 9 que es 0x39.

Entonces para convertir a ASCII el 1 y al 3, deberías sumarle 0x30, de esa mañería tendrías 0x31 y 0x33

Es decir sería así:

Código: C
  1. Time[6] =  hours   / 10 + 0x30          // Guardamos las decenas de la variable "hours" en la posición 6 del arreglo "Time".
  2.  Time[7] =  hours   % 10 + 0x30;

Si no deseas escribir 0x30, puedes representarlo como carácter en ASCII, Es decir '0'. '0' es lo mismo que 0x30, '1' es lo mismo que 0x31, etc.





Título: Re:Duda en C
Publicado por: Sebas1010 en 17 de Septiembre de 2022, 18:03:57
muchas gracias!!! ahi lo entindi bien!.