Autor Tema: sumar int16 y int 8  (Leído 2978 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
sumar int16 y int 8
« en: 02 de Mayo de 2018, 16:33:22 »
saludos, tengo una una duda

tengo dos variables tal como se muestra en la siguiente

int16 j=1000;
int8 i=10;
int8 k;

k=i+(int8)j;

es posible la operacion anterior?
gracias
 
« Última modificación: 02 de Mayo de 2018, 17:05:14 por micronet3 »

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:sumar int16 y int 8
« Respuesta #1 en: 02 de Mayo de 2018, 16:55:19 »

La operación es posible, otra cosa es que el resultado sea el que esperás.

   k == i + (int8)j     

Ahí se suma el 1er byte de j (= 232), por lo tanto la evaluación sería:

   k == 10 + 232

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:sumar int16 y int 8
« Respuesta #2 en: 02 de Mayo de 2018, 17:10:48 »
a ok entonces el segundo byte de j se pierde

gracias

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re:sumar int16 y int 8
« Respuesta #3 en: 02 de Mayo de 2018, 17:36:53 »
Deberías hacer al revés:

int16 j=1000;
int8 i=10;
int16 k;

k=(int16)i+j;

Asi no pierdes nada.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado electroipod

  • PIC16
  • ***
  • Mensajes: 166
Re:sumar int16 y int 8
« Respuesta #4 en: 03 de Mayo de 2018, 13:50:57 »
Te voy a recomendar al mejor profesor para resolver esto, es el compilador, el compilador te dirá si esta bien o mal.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:sumar int16 y int 8
« Respuesta #5 en: 07 de Mayo de 2018, 12:14:59 »
Te voy a recomendar al mejor profesor para resolver esto, es el compilador, el compilador te dirá si esta bien o mal.

creo que no siempre!

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:sumar int16 y int 8
« Respuesta #6 en: 07 de Mayo de 2018, 19:34:57 »
saludos, tengo una una duda

tengo dos variables tal como se muestra en la siguiente

int16 j=1000;
int8 i=10;
int8 k;

k=i+(int8)j;

es posible la operacion anterior?

El C es famoso porque te permite dispararte en el pie. Casi todo está permitido. Por ejemplo borrar todo el espacio de memoria de programa:
   for(int i=0; i; i++) *((int *)i)=0;


Lo que estás haciendo es:
1000 = 3*256 + 232
por lo que (int8)j  es igual a 232
k = 10 + 232 = 242

Desconectado colotron

  • PIC12
  • **
  • Mensajes: 73
    • Canal de YouTube
Re:sumar int16 y int 8
« Respuesta #7 en: 09 de Mayo de 2018, 08:57:34 »
Buscar sobre "integer promotion C", la idea es que se busca realizar la operación en el tipo de datos de menor tamaño que contenga a los 2 operandos, y luego al escribir el resultado se convierte al tipo de la variable del lado izquierdo del =