Re: float const -> double
Мноого, много общо казано и с риск някой спец да се подхилне под мустак
,
заради начина по който работят процесорите, тяхното ALU има две основни линии A и B и бинарен декодер, който сетва логическата операция която да се извърши между А и Б ( AND, OR, NOT, ADD). Компилатора превръща твоя аритметичен израз в тристейт код (от три части - оператор/операнд/операнд) - остатък от времената на перфо-картите.
Оператора застава най-отгоре(или най-отдолу при ревърс полиш нотейшън(според зависи)) на стека и се фечва пръв или последен, сетвайки бинарния декодер на АЛУ-то или каквато е там друга логика за логическата операция която ще се извършва между А и Б,
След това стека се pop-ва и така се фечва първия операнд. Следва нов пулс на програм-каунтъра, ново pop-ване на стека и фечване на втория операнд към линиите Б.
Резултата се записва в резервоар (или обратно в регистъра където е била една от променливите), който резултат се подава обратно на линия А, нов пулс- на програм каунтъра, ново фечване към линията Б .... Заради това записване на резултата в един от регистрите в които е била една от изходящите ти променливи, с цел да се подаде в следващия цикъл обратно към А, имаш два вида променливи L_var, R-var . В първите можеш да записваш резултат, във втoроите не. Както и имаш асоциативитет на операторите -ляв и десен. ' * ' е с ляв асоциативитет, т.е. -ако имаш израза: result = a*b*c*d*e*f, това което се случва е: а=a*b , а=a*c, а=a*d, а=a*e, a=a*f; result = a;
Т.е. , както виждаш , в твоя случай 'а' ти се тайпкаства към ' b' или 'b' към 'a', според правилата на Ц- тоя който заема по-малко памет, към тоя който заема повече.
а при теб и двата са 'int' . След което по правилата на аритметиката в модул int a=32000 ,b=32000; a=a*b , 'a' ти овър-флоутва и почва да брои от начало.
Така. Ще ме извиниш за цялата тирада , ако вече ги знаеш тея работи и ако съм сбъркал нещо в бързината, не се знаем тука кой на каква вълна и докъде е и от това дискусията страда понякога или някой рискува да се направи на 'смарт асс' , но не е това целта.
Всичко добро.