Migliore risposta
Differenza B / n Breve e Lungo int
La differenza è molto piccola ma può essere molto importante in alcuni casi. Quando si programma il secondo obiettivo più importante (dopo aver fatto fare al programma quello che dovrebbe) è salvare la memoria per far funzionare il programma il più velocemente possibile. È qui che entra in gioco la tua parola chiave “long”. Long è un numero intero ma integer non è “t esattamente un long capisci? Cè anche un” short “. Ora di solito questi sono referenziati con int dopo di loro ma non è obbligatorio. la differenza tra loro è la loro dimensione. A seconda del computer, ma nella maggior parte dei casi un “short” è di due byte, un “long” è di quattro byte e un “int” può essere di due o quattro byte. È importante nei programmi che lo dichiari breve o lungo se sai esattamente quanto sarà grande il numero e quanto spesso verrà modificato in modo da poter risparmiare quanta più memoria possibile. Ora per quanto riguarda lintervallo che dipende dalla dimensione del valore int è di due o quattro byte. Ecco una tabella per fare riferimento a dimensioni e valori.
intervallo di dimensioni del tipo
short int 2 byte da -32.768 a 32.767
long int 4 byte da -2.147.483.648 a 2.147.483.647
int (16 bit) 2 byte da -32.768 a 32.767
int (32 bit) 4 byte -2.147 , Da 483.648 a 2.147.483.647
Differenza B / n Float e Double
Numeri in virgola mobile, noti anche come reali numeri, vengono utilizzati durante la valutazione di espressioni che richiedono una precisione frazionaria. Ad esempio, calcoli come radice quadrata o trascendentale come seno e coseno danno come risultato un valore la cui precisione richiede un tipo a virgola mobile. Java implementa linsieme standard (IEEE-754) di tipi e operatori in virgola mobile. Esistono due tipi di virgola mobile, float e double, che rappresentano rispettivamente numeri a precisione singola e doppia. La loro larghezza e i loro intervalli sono mostrati qui:
Larghezza del nome nellintervallo di bit
double 64 1 .7e – 308 to 1.7e + 308
float 32 3 .4e – 038 to 3.4e + 038
Ciascuno di questi Successivamente vengono esaminati i tipi a virgola mobile.
float
Il tipo float specifica un valore a precisione singola che utilizza 32 bit di memoria. La precisione singola è più veloce su alcuni processori e occupa la metà dello spazio della doppia precisione, ma diventerà imprecisa quando i valori sono molto grandi o molto piccoli. Le variabili di tipo float sono utili quando è necessario un componente frazionario, ma non richiedono un elevato grado di precisione. Ad esempio, float può essere utile quando si rappresentano dollari e centesimi.
Ecco alcuni esempi di variabili float dichiarazioni:
float hightemp, lowtemp;
double
La doppia precisione, come indicato dalla parola chiave double, utilizza 64 bit per memorizzare un valore. La doppia precisione è in realtà più veloce della singola precisione su alcuni processori moderni che sono stati ottimizzati per la matematica ad alta velocità calcoli. Tutte le funzioni matematiche trascendentali, come sin (), cos () e sqrt (), restituiscono valori doppi. Quando è necessario mantenere laccuratezza su molti calcoli iterativi o si manipolano numeri con valori elevati, double è la scelta migliore .
Ecco un breve programma che utilizza variabili doppie per calcolare larea di un cerchio:
// Calcola th e area di un cerchio.
class Area {
public static void main (String args []) {
double pi, r, a;
r = 10,8; // raggio del cerchio
pi = 3.1416; // pi, approssimativamente
a = pi * r * r; // area di calcolo
System.out.println (“Larea del cerchio è” + a);
}
}
Risposta
Come al solito, dipende . Le dimensioni esatte di shorts e long sono lasciate allimplementatore del compilatore, che selezionerà le rappresentazioni che meglio si adattano allarchitettura di destinazione. È possibile (ma improbabile) che sizeof(short) == sizeof(int) == sizeof(long)
, nel senso che siano tutti uguali. Lunica garanzia che hai è che la dimensione di uno short è inferiore o uguale alla dimensione di un long. Per le dimensioni esatte, utilizza lintestazione
; oppure per astrarre i dettagli orribili, utilizza il std::numeric\_limits
modello da
.
Un ragionamento simile si applica a float e double, ma qui è più probabile che float
rappresenti un numero a virgola mobile a precisione singola (4 byte) e double
sarà un numero in virgola mobile a doppia precisione (8 byte).È stato scritto troppo software che presuppone IEEE 754 , quindi è meno probabile che gli autori di compilatori si discostino dalle regole.