Legjobb válasz
Különbség B / w Rövid és Hosszú int
Nos, a különbség nagyon kicsi, de egyes esetekben nagyon fontos lehet. A második legfontosabb cél programozásakor (miután a programot megtette annak, amit kellett) a memória megtakarítása, hogy a program a lehető leggyorsabban futhasson. Itt jön be a “long” kulcsszó. A long egy egész szám, de az egész nem pontosan értendő? Van egy “rövid” is. Most ezekre általában utólag int hivatkozunk, de nem szükséges. A különbség közöttük a méretük. A számítógéptől függően, de a legtöbb esetben a “rövid” két, a “hosszú” négy, az “int” pedig két vagy négy bájtos lehet. A programokban fontos, hogy ezt deklarálja rövid vagy hosszú, ha pontosan tudja, hogy mekkora lesz a szám, és milyen gyakran módosul, hogy minél több memóriát spórolhasson meg. Most már az int méretétől függő tartományig két vagy négy bájt. Itt egy táblázat a referenciaméretekhez és értékekhez.
típusmérettartomány
rövid int 2 bájt -32 768 – 32 767
hosszú int 4 bájt -2 147 483 648 – 2 147 483 647
int (16 bites) 2 bájt -32 768 – 32 767
int (32 bites) 4 bájt -2 147 , 483 648 – 2 147 483 647
Különbség a fekete-fehér úszó és dupla
Lebegőpontos számok, más néven valós számokat használjuk a töredék pontosságot igénylő kifejezések kiértékelésénél. Például olyan számítások, mint a négyzetgyök, vagy a transzcendentális, mint a szinusz és a koszinusz, olyan értéket eredményeznek, amelynek pontossága lebegőpontos típust igényel. A Java lebegőpontos típusok és operátorok szabványos (IEEE – 754) halmazát valósítja meg. Kétféle lebegőpontos típus létezik, úszó és kettős, amelyek egy-, illetve kettős pontosságú számokat képviselnek. Szélességüket és tartományukat itt mutatják:
Névszélesség bit tartományban
dupla 64 1 .7e – 308 – 1.7e + 308
32 float 3 .4e – 038 – 3.4e + 038
Ezek mindegyike legközelebb lebegőpontos típusokat vizsgálunk.
lebegő
A float típus megad egy precíziós értéket, amely 32 bit tárhelyet használ. Egyes processzoroknál az egyetlen pontosság gyorsabb, és fele annyi helyet foglal el, mint a kettős pontosság, de pontatlanná válik, ha az értékek vagy nagyon nagyok, vagy nagyon kicsiek. Az úszó típusú változók akkor hasznosak, ha töredékkomponensre van szükség, de nem igényel nagyfokú pontosságot. Például az úszó hasznos lehet dollár és cent ábrázolásakor.
Íme néhány példa az úszó változóra nyilatkozatok:
float hightemp, lowtemp;
double
A kettős pontosság, amelyet a kettős kulcsszó jelöl, 64 bitet használ az érték tárolásához. A kettős pontosság gyorsabb, mint az egy pontosság néhány modern processzoron, amelyet nagysebességű matematikai célokra optimalizáltak Számítások. Minden transzcendentális matematikai függvény, mint például a sin (), cos () és az sqrt (), kettős értéket ad vissza. Ha sok iteratív számítás során meg kell őriznie a pontosságot, vagy ha nagy értékű számokat manipulál, akkor a legjobb a kettős .
Itt egy rövid program, amely dupla változóval számítja ki a kör területét:
// Számítsa ki a th egy kör területe.
osztályterület {
public static void main (String args []) {
dupla pi, r, a;
r = 10,8; // kör sugara
pi = 3,1416; // pi, körülbelül
a = pi * r * r; // terület kiszámítása
System.out.println (“A kör területe” + a);
}
}
Válasz
Szokás szerint ez függ . A rövid és hosszú hosszúság pontos mérete a fordító megvalósítójának marad, aki kiválasztja a célarchitektúrának leginkább megfelelő ábrázolásokat. Lehetséges (de valószínűtlen), hogy sizeof(short) == sizeof(int) == sizeof(long)
, vagyis mindegyik egyforma. Az egyetlen garancia arra van, hogy a short mérete kisebb vagy egyenlő a hosszú méretével. A pontos méretekhez használja a
fejlécet; vagy a csúnya részletek elvonatkoztatásához használja a std::numeric\_limits
sablont a
sablonból.
Hasonló érvelés vonatkozik a lebegő és kettős, de itt valószínűbb, hogy a float
egyetlen pontosságú lebegőpontos számot (4 bájt) képvisel, és double
kettős pontosságú lebegőpontos szám (8 bájt).Túl sok olyan szoftvert írtak, amely az IEEE 754 feltételeket feltételezi , így a fordító írói kevésbé hajlandók eltérni a szabályoktól.