Napisałem prosty program w języku C i chciałem się dowiedzieć, czy w nim odbywa się promocja liczb całkowitych.Integer promotion in C program
Proszę wyjaśnić, w jaki sposób odbywa się promocja na liczbach całkowitych i jak tego uniknąć?
/* start of main */
unsigned short int res;
unsigned short int bsp;
signed short int analog;
bsp = 2215;
analog = 2213;
if((signed short int)(bsp - analog) > 0){
res = bsp - analog;
printf("%d", res);
}
else{
res = analog - bsp;
printf("%d", res);
}
Podpowiedź: 'printf ("% d ", res);' -> spójrz tam ... –
@Ravi dla całkowitej promocji zobacz co powiedział Sourav, jednak mam wątpliwości: zamiast "promocji całkowitej" masz na myśli "zwykłą konwersję arytmetyczną"? –
'bsp - analogowe' i 'analogowe - bsp' oba powodują promocję. – Sergio