Hozzászólások
Sziasztok!
van egy igen egyszeru java-s kerdesem:
short a=2, b=3, c; c=a+b;
miert hibas? az a+b kifejezes tipusa miert lesz int? ez valami short specifikus dolog?
Tehat azt furcsallom es kerdezem, hogy short+short kif. tipusa miert int...
es akkor int+int miert nem long?
Tudom hogy c=(short)(a+b) mukodik, de nem ertem, hogy milyen kulonbseg van az int, es a short tipus kozott azt leszamitva, hogy az utobbi kevesebb byteon van abrazolva...
Szoval ez mellozi a logikat, es tudomasul kell venni, hogy igy van, vagy van valami oka, amire en nem jottem ra?
Megkerdeztem mar tobb irc csatornan, de sehol nem kaptam ertelmes valaszt... mint pl: "igen, ez short specifikus dolog", vagy "azert van igy, mert..."
A kerdes azert fontos, mert e pelda ellentmond annak a szabalynak, hogy amit a tobbi elemi tipusnal hasznal, (szerintem)(ill. nem probaltam vegig az oszeset), de igy erhetnek meglepetesek..., amiket kerulni szeretnek!
- A hozzászóláshoz be kell jelentkezni
nem lehet, hogy a + b > SHORT_MAX ?
- A hozzászóláshoz be kell jelentkezni
[quote:ac2483b69f="bitumen"]nem lehet, hogy a + b > SHORT_MAX ?
nem, 2+3 (vagy kb. ezt irtam) =5 ugyhogy az belefer a 4 byteba...
Egy otlet persze, hogy azert van igy, hogy tulcsordulas ne lehessen, de akkor az lenne a logikus, ha mas tipusnal is igy legyen. Nem?
Pl: int a=3, b=4, c; c=a+b;
Ez helyes. Tehat nem ugy kezeli szeritnem, mint short-ot!
- A hozzászóláshoz be kell jelentkezni
ezert: Java Language Specification, 5.6.2: Binary Numeric Promotion
kapcsolodva: 15.18.2 Additive Operators (+ and -) for Numeric Types
- A hozzászóláshoz be kell jelentkezni
[quote:80be548d42="snq-"]ezert: Java Language Specification, 5.6.2: Binary Numeric Promotion
kapcsolodva: 15.18.2 Additive Operators (+ and -) for Numeric Types
Kosz!
- A hozzászóláshoz be kell jelentkezni