TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micronet3 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
-
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
-
a ok entonces el segundo byte de j se pierde
gracias
-
Deberías hacer al revés:
int16 j=1000;
int8 i=10;
int16 k;
k=(int16)i+j;
Asi no pierdes nada.
-
Te voy a recomendar al mejor profesor para resolver esto, es el compilador, el compilador te dirá si esta bien o mal.
-
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!
-
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
-
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 =