Paras vastaus
Ero B / w Lyhyt ja pitkä int
Ero on hyvin pieni, mutta voi olla erittäin tärkeä joissakin tapauksissa. Kun ohjelmoidaan toiseksi tärkein tavoite (kun olet saanut ohjelman tekemään sen, mitä sen on tarkoitus), on muistin säästäminen, jotta ohjelma toimii mahdollisimman nopeasti. Tällöin avainsanasi ”pitkä” tulee sisään. Pitkä on kokonaisluku, mutta kokonaisluku ei ole täsmälleen pitkä ymmärtää? On myös ”lyhyt”. Nyt näihin viitataan yleensä int: n jälkeen, mutta sitä ei vaadita. ero niiden välillä on niiden koko. Tietokoneesta riippuen, mutta useimmissa tapauksissa ”lyhyt” on kaksi tavua, ”pitkä” on neljä tavua ja ”int” voi olla kaksi tai neljä tavua. On tärkeää, että ilmoitat sen ohjelmissa lyhyt tai pitkä, jos tiedät tarkalleen kuinka suuri numero tulee olemaan ja kuinka usein sitä muutetaan, jotta voit säästää mahdollisimman paljon muistia. Nyt niin pitkälle kuin alue, joka riippuu int-koosta, onko se on kaksi tai neljä tavua. Tässä on taulukko viitekokoille ja -arvoille.
-tyyppikokoalue
lyhyt int 2 tavua -32 768 – 32 767
pitkä int 4 tavua -2 147 483 648 – 2 147 483 647
int (16 bittiä) 2 tavua -32 768 – 32 767
int (32 bittiä) 4 tavua -2147 , 483 648 – 2 147 483 647
Ero mustavalkoiset kelluvat ja kaksinkertaiset
liukuluvut, tunnetaan myös todellisina numeroita käytetään arvioitaessa murtotarkkuutta vaativia lausekkeita. Esimerkiksi laskelmat, kuten neliöjuuri, tai transsendentaaliset, kuten sini ja kosini, johtavat arvoon, jonka tarkkuus vaatii liukulukutyyppiä. Java toteuttaa standardin (IEEE – 754) liukulukutyypit ja operaattorit. Liukuluvutyyppejä on kahta tyyppiä, kelluva ja kaksinkertainen, jotka edustavat vastaavasti yhden ja kaksitarkkuutta. Niiden leveys ja alueet näkyvät tässä:
Nimen leveys bittialueella
kaksinkertainen 64 1 .7e – 308 – 1.7e + 308
kelluva 32 3 .4e – 038 – 3.4e + 038
Jokainen näistä seuraavaksi tutkitaan liukuluku tyyppejä.
kelluva
Tyyppi float määrittää yhden tarkkuuden arvon, joka käyttää 32 bittiä tallennustilaa. Yksittäinen tarkkuus on nopeampi joillakin prosessoreilla ja vie puolet enemmän tilaa kuin kaksoistarkkuus, mutta siitä tulee epätarkka, kun arvot ovat joko hyvin suuria tai hyvin pieniä. Float-tyyppiset muuttujat ovat hyödyllisiä, kun tarvitset murto-osaa, mutta älä vaadi suurta tarkkuutta. Esimerkiksi float voi olla hyödyllinen, kun edustetaan dollareita ja senttejä.
Tässä on joitain esimerkkejä float-muuttujista ilmoitukset:
float hightemp, lowtemp;
kaksinkertainen
Kaksinkertainen tarkkuus, jota merkitään kaksoisavainsanalla, käyttää 64 bittiä arvon tallentamiseen. Kaksoistarkkuus on itse asiassa nopeampi kuin yksi tarkkuus joissakin nykyaikaisissa prosessoreissa, jotka on optimoitu nopeaan matemaattiseen Kaikki transsendenttiset matemaattiset funktiot, kuten sin (), cos () ja sqrt (), tuottavat kaksinkertaiset arvot. Kun sinun on ylläpidettävä tarkkuutta monissa iteratiivisissa laskelmissa tai manipuloit suuria lukuja, kaksinkertainen on paras valinta .
Tässä on lyhyt ohjelma, joka käyttää kaksinkertaisia muuttujia ympyrän alueen laskemiseen:
// Laske th ympyrän alue.
luokan alue {
public static void main (String args []) {
kaksinkertainen pi, r, a;
r = 10,8; // ympyrän säde
pi = 3.1416; // pi, suunnilleen
a = pi * r * r; // laskea alue
System.out.println (”Ympyrän alue on” + a);
}
}
Vastaa
Kuten tavallista, se riippuu . Lyhyiden ja pitkien pitkät koot jätetään kääntäjän toteuttajalle, joka valitsee esitysmuodot, jotka sopivat parhaiten kohdearkkitehtuuriin. On mahdollista (mutta epätodennäköistä), että sizeof(short) == sizeof(int) == sizeof(long)
, mikä tarkoittaa, että ne ovat kaikki samanlaisia. Ainoa sinulla oleva takuu on, että lyhyen kappaleen koko on pienempi tai yhtä suuri kuin pitkä. Käytä tarkkoja kokoja
-otsikossa; tai jos haluat tiivistää rumat yksityiskohdat, käytä std::numeric\_limits
-mallia mallista
.
Samanlainen perustelu koskee kelluketta ja kaksinkertainen, mutta tässä on todennäköisempää, että float
edustaa yhden tarkkuuden liukulukua (4 tavua) ja double
kaksitarkka liukuluku (8 tavua).Liian paljon ohjelmistoja on kirjoitettu, mikä edellyttää IEEE 754: ää , joten kääntäjien kirjoittajat eivät todennäköisesti poikkea sääntöistä.