Spørgsmål om C programmering

K

km

Guest
Rutinemæssig af programmet: - float ftov () {int a; printf ("\ n \ nIndtast tal:"); scanf ("% d", & a); OUT = 0,000040955 * a; printf ("\ n OUT =% f \ n ", OUT), returner OUT;} Når a = 10000, OUT = 0,40955 Men hvorfor, når a = 100000, OUT giver negativ værdi (-1,272554) i stedet for 4,0995?::
 
Hej Jeg tror u skulle prøve den samme kode i Microsoft VC + + compiler . sin compiler problem u kan bruge 16 eller 32 bit compiler. u kan prøve denne kode i TC, thats y sin virker ikke
 
I overensstemmelse int a; int er en 16 bit værdi. Værdien 100000 er 0x186a0, og når du tildeler en = 100000 Værdien er afskåret til 16 bits, så variablen a lig med 0x86a0. Værdien 0x86a0 er lig med moms -31072, så du får den værdi (-1,272554) i stedet for 4,0995. Du skal erstatte linje int a; med lange a; Regards, svicent
 

Welcome to EDABoard.com

Sponsor

Back
Top