[Powered by Google Translate] GIORDANIA Jozwiak: fusione Type, nel senso più semplice, è un
modo di alterare l'interpretazione di un computer di alcuni dati da
implicitamente o esplicitamente modificando il tipo di dati.
Come cambiare un int in un float, o viceversa.
Per capire cast di tipo, abbiamo bisogno di
iniziare con le basi -
tipi di dati stessi.
In linguaggi di programmazione come C, tutte le variabili hanno un qualche tipo
del tipo di dati che determina come il computer, e similmente
l'utente, interpreta quella variabile.
Tipi di dati numerici, come un int, long long, float e
doppie, tutte hanno le loro caratteristiche uniche e sono
utilizzato per specificare i valori di diverse gamme e precisione.
Tipo di fusione ci permette di prendere un numero in virgola mobile come
3.14 e ottenere la parte prima del decimale, 3 in questo caso,
per il cast a int.
Prendiamo un esempio dalla lingua inglese per un breve
revisione dei tipi, e per vedere come casting di tipo può cambiare
il nostro modo di interpretare un pezzo di dati.
Per i dati, prendiamo i simboli qui.
Ho solo fare riferimento a queste linee attentamente configurati come
simboli, ma come qualcuno che conosce la lingua inglese,
si riconosce immediatamente che essi sono, infatti, lettere.
È implicitamente inteso il tipo di dati.
Guardando questa stringa di lettere che possiamo vedere due
parole diverse, ognuna con un proprio significato.
C'è il nome, il vento, come il vento soffia in esterni.
E c'è il verbo, il vento, come in ho bisogno di
vento il mio orologio analogico.
Questo è un esempio interessante, perché possiamo vedere
come il tipo che assegniamo ai nostri dati, sia sostantivo o
verbo, cambia il modo che usiamo questi dati -
come il vento parola o vento.
Anche se un computer non si preoccupa di grammatica e parti
di parola inglese, lo stesso principio di base si applica.
In altre parole, siamo in grado di cambiare l'interpretazione della esatta
stessi dati in memoria, semplicemente colata ad una
tipo diverso.
Qui sono le dimensioni dei tipi più comuni su un 32-bit
sistema operativo.
Abbiamo un char a 1 byte, int e float a 4 byte, un lungo
lunga e una doppia a 8 byte.
Dato che un int occupa 4 byte, ci vorranno 32 bit
quando viene memorizzato come una serie binaria
di zero e uno.
Fino a quando la nostra variabile rimane un tipo int, il
computer sarà sempre convertire i uni e zeri di
binario nel numero originale.
Tuttavia, si potrebbe teoricamente lanciare quelle 32
bit in una serie di tipi booleani.
E poi il computer non sarebbe più vedere un numero, ma
invece una serie di zero e uno.
Si potrebbe anche provare a leggere i dati come un valore numerico diverso
tipo, o anche come una stringa di quattro caratteri.
Quando si tratta di numeri in fusione, è necessario considerare come
la precisione del tuo valore sarà influenzato.
Tenete a mente che la precisione può restare lo stesso,
o si può perdere la precisione, ma non si può mai guadagnare in precisione.
Andiamo attraverso i tre modi più comuni che è possibile
perdere precisione.
Lanciare una float in un int causerà troncamento di tutto
dopo la virgola, quindi si è lasciato
con il numero intero.
Se prendiamo la x galleggiante che sarà uguale a 3.7, si può lanciare
questa variabile x in un int semplicemente scrivendo int in
parentesi.
Ogni volta che usiamo questo termine qui, faremo in modo efficace
utilizzare il valore di tre perché abbiamo troncato
tutto dopo il punto decimale.
Possiamo anche convertire un lungo tempo per un int, che sarà
similmente portare a una perdita di bit di ordine superiore.
Una lunga lunga occupa 8 byte, o 64 bit in memoria.
Così, quando il cast ad un int che ha solo 4 byte, o 32
bit, stiamo essenzialmente tagliando tutti i bit che
rappresentano i valori binari superiori.
Si potrebbe anche lanciare un doppio di un galleggiante, che darà
si il galleggiante più vicino possibile al doppio senza
necessariamente arrotondamento.
Simile al nostro long long int alla conversione, la perdita di
precisione perché un doppio contiene più dati.
Un doppio permette di memorizzare 53 bit significativi,
circa 16 cifre significative.
Considerando che un galleggiante solo consentirà di memorizzare 24
bit significativi, circa sette cifre significative.
In questi ultimi due casi, può essere utile pensare
digitare fusione il ridimensionamento di una foto.
Quando si passa da una dimensione di grandi dimensioni a una dimensione piccola, non si può vedere
le cose nel modo più chiaro perché hai perso i dati
sotto forma di pixel.
Tipo di fusione può anche causare problemi quando si
gettato int a float.
Dal momento che galleggia su una macchina a 32 bit solo 24
bit significativi, essi non possono rappresentare accuratamente valori
oltre 2 alla potenza di 24, o 16.777.217.
Ora parliamo di cast esplicito e implicito.
Fusione esplicita è quando scriviamo il tipo tra parentesi
prima di un nome di variabile.
Per fare un esempio, prima di int scritto tra parentesi prima del nostro
float variabile x.
In questo modo, si ottiene il valore di int, il
valore troncato di 3,7 -
3.
Cast implicito è quando il compilatore cambia automaticamente
tipi simili a un super tipo, o esegue qualche altro tipo di
colata senza richiedere all'utente di scrivere
alcun codice aggiuntivo.
Per esempio, quando si aggiungono 5 e 1.1, i nostri valori già
tipi ad essi associati.
Il 5 è un int, mentre 1.1 è un float.
Per aggiungerli, il computer getta 5 in un float,
che sarebbe stata la stessa cosa che scrivere 5.0 nella
primo posto.
Ma in questo modo diciamo galleggiante 5 o 5.0, oltre a ciò che era già
un galleggiante, 1.1, e da lì si può aggiungere questi
valori e ottenere il valore di 6.1.
Cast implicito ci permette anche di assegnare le variabili di
tipi diversi tra loro.
Possiamo sempre assegnare un tipo meno preciso in un più
uno precisa.
Per esempio, se abbiamo una doppia x, y e un int -
e questi potrebbero avere tutti i valori che li impostati -
si può dire x è uguale a y.
Poiché la doppia ha una maggiore precisione di un int, quindi abbiamo
non perdere alcuna informazione.
D'altra parte, non sarebbe necessariamente corretto dire
y è uguale a x, perché la doppia potrebbe avere un valore maggiore di
il numero intero.
E così l'intero potrebbe non essere in grado di contenere tutti i
informazioni memorizzate nel doppio.
Cast implicito è utilizzato anche in operatori di confronto come
superiore, inferiore, o l'operatore di uguaglianza.
In questo modo siamo in grado di dire se 5.1 è maggiore di 5, e si ottiene il
risultato vero.
Poiché 5 è un int, ma sarà lanciato ad un galleggiante, al fine di
essere confrontato con il galleggiante 5.1, diremmo 5.1 è
superiore a 5,0.
Lo stesso vale con dire se è uguale a 2,0 è uguale a 2.
Ci piacerebbe anche avere vero, perché il computer sarà il cast
intero 2 a stare a galla e poi dire 2,0 è uguale uguale a 2.0,
questo è vero.
Non dimenticate che siamo in grado di lanciare tra interi e caratteri,
o valori ASCII.
Chars anche bisogno di essere ridotto a binario, che è il motivo per
può convertire facilmente tra i caratteri e le loro rispettive
Valori ASCII.
Per ulteriori informazioni su questo, la nostra video su ASCII.
Quando si prende un momento per pensare a come i dati memorizzato,
comincia a fare un sacco di senso.
E 'come la differenza tra il vento e il vento.
Dati è la stessa, ma il tipo si può cambiare il modo
interpretarla.
Il mio nome è Jordan Jozwiak, questo CS50.