[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.