C - Ako funguje konverzia cisel?

Jan Waclawek konfera na efton.sk
Středa Červenec 5 10:13:34 CEST 2023


[preposielam]

Ahojte,

mam v programe nasledujucu funkciu:

signed int MCP9700_Get_Temperature(unsigned int Voltage) {

    // unsigned int ADC_Voltage = 100...1750mV
    // signed int Temperature = (signed int)ADC_Voltage - 500mV
    return((signed int)Voltage - 500);
}

Chcel by som sa spytat, ako funguje konverzia premennej typu unsigned int
na premennu typu signed int? Otazka je, ci pridat pred tu konverziu este
kontrolu rozsahu vstupnej premennej unsigned int. Nasledujuca funkcia
mi totiz obcas hlasi chybu rozsahu pri zobrazovani premennej signed int.
Tak hladam chybu, ktora mi to sposobuje.

Pri tych konverziach unsigned int na signed int, je unsigned int maximalne
v rozsahu 0..2500 resp. 0..5000, takze znamienkovy bit je vo vsetkych
pripadoch vynulovany a konverzia by mala prebehnut normalne. Problem by
mohol nastatat pri cislach vacsich ako 32767, ked sa uz nastavi znamienkovy
bit na 1 a vysledok konverzie je zaporne cislo, co je v mojom pripade
chyba. Je tato moja domienka spravna?

Velmi pekne dakujem za odpovede.

A.



Další informace o konferenci Hw-list