Tutorial C ++ sulla gestione di float e ints

Un int è un numero intero come 47 senza un punto decimale. Non puoi avere 4.5 bambini o loop 32.9 volte. Puoi avere $ 25,76 se usi un float. Quindi quando crei il tuo programma, devi decidere quale tipo usare.

Questo è ciò che fanno alcuni linguaggi di scripting? Poiché è inefficiente, i float occupano più memoria e sono generalmente più lenti degli ints. Inoltre, non puoi facilmente confrontare due float per vedere se sono uguali come puoi con gli ints.

Per manipolare i numeri devi archiviarli in memoria. Poiché il valore può essere facilmente modificato, si chiama variabile.

Il compilatore che legge il tuo programma e lo converte in codice macchina deve sapere di che tipo è, ovvero se è un int o un float, quindi prima che il tuo programma usi una variabile, devi dichiarare esso.

Noterai che la variabile Counter è impostata su 0. Questa è un'inizializzazione opzionale. È una buona pratica inizializzare le variabili. Se non si inizializza e quindi li si utilizza nel codice senza aver impostato un valore iniziale, la variabile inizierà con un valore casuale che potrebbe "violare" il codice. Il valore sarà quello che era in memoria quando il programma è stato caricato.

instagram viewer

Qual è il numero più grande che un int può memorizzare?. Bene, dipende dal tipo di processore ma è generalmente accettato come 32 bit. Poiché può contenere quasi tutti i valori negativi che positivi, l'intervallo di valori è +/- 2-32 a 232 o da -2.147.483.648 a +2.147.483.647.

Questo è per un int firmato, ma c'è anche un unsigned int che contiene zero o positivo. Ha un intervallo compreso tra 0 e 4.294.967.295. Ricorda - gli ints non firmati non hanno bisogno di un segno (come + o -1) davanti a loro perché sono sempre positivi o 0.

Esiste un tipo int più breve, casualmente chiamato short int che utilizza 16 bit (2 byte). Questo contiene numeri nell'intervallo da -32768 a +32767. Se usi una grande quantità di ints, puoi eventualmente risparmiare memoria usando ints brevi. Non sarà più veloce, nonostante sia la metà delle dimensioni. Le CPU a 32 bit recuperano i valori dalla memoria in blocchi di 4 byte alla volta. Cioè 32 bit (da qui il nome: CPU a 32 bit!). Quindi il recupero di 16 bit richiede ancora un recupero di 32 bit.

C'è un 64 bit più lungo chiamato lungo lungo in C. Alcuni compilatori C ++ pur non supportando quel tipo usano direttamente un nome alternativo, ad es. sia Borland che Microsoft usano _int64. Questo ha un intervallo da -9223372036854775807 a 9223372036854775807 (firmato) e da 0 a 18446744073709551615 (non firmato).

A meno che tu non stia eseguendo una programmazione scientifica con numeri molto grandi o piccoli, utilizzerai i doppi solo per una maggiore precisione. I galleggianti sono buoni per 6 cifre di precisione, ma i doppi offrono 15.

Considera il numero 567.8976523. È un valore float valido. Ma se lo stampiamo con questo codice sotto puoi vedere la mancanza di precisione. Il numero ha 10 cifre ma viene memorizzato in una variabile float con solo sei cifre di precisione.

Vedere Informazioni su input e output per dettagli su come funziona cout e su come usare la precisione. Questo esempio imposta la precisione dell'output su 8 cifre. Sfortunatamente i float possono contenere solo 6 e alcuni compilatori emetteranno un avviso sulla conversione di un double in un float. Quando eseguito, questo viene stampato 567.89764

Se si modifica la precisione su 15, viene stampata come 567.897644042969. Piuttosto una differenza! Ora sposta il punto decimale di due a sinistra, quindi il valore è 5.678976523 ed esegui nuovamente il programma. Questa volta genera 5.67897653579712. Questo è più preciso ma ancora diverso.

Se si modifica il tipo di valore in doppio e la precisione in 10, il valore verrà stampato esattamente come definito. Come regola generale, i float sono utili per numeri piccoli, non interi ma con più di 6 cifre, è necessario utilizzare i doppi.

Scrivere software non sarebbe molto utile se non si potesse fare addizioni, sottrazioni ecc. Ecco l'esempio 2.

Oltre all'aggiunta, puoi fare sottrazione, moltiplicazione e divisione. Usa + per l'aggiunta, - per la sottrazione, * per la moltiplicazione e / per la divisione.

Con i float, non hai alcun controllo su quanti punti decimali vengono visualizzati a meno che tu non imposti la precisione come mostrato in precedenza.

Ora larghezza, allineamento, numero di posizioni decimali e segni possono essere impostati dal cout oggetto e iomanip include funzioni di file.

Migliaia di separatori sono un po 'più complicati. Sono impostati dalle impostazioni locali di un PC. Un'impostazione internazionale contiene informazioni rilevanti per il tuo Paese, ad esempio simboli di valuta e virgola decimale e separatori delle migliaia. Nel Regno Unito e negli Stati Uniti, il numero 100,98 utilizza un punto decimale. come punto decimale, mentre in alcuni paesi europei è una virgola, quindi € 5,70 significa un prezzo di 5 euro e 70 centesimi.

crea un oggetto mpunct che è un riferimento a moneypunct classe modello. Questo contiene informazioni sulla locale specificata - nel nostro caso, il thousands_sep () Il metodo restituisce il carattere utilizzato per il separatore delle migliaia.

Nota Sembra che ci siano discrepanze tra i diversi compilatori su come cout.imbue si comporta. In Visual C ++ 2005 Express Edition, questo includeva i separatori. Ma lo stesso codice con Microsoft Visual C ++ 6.0 no!

Se si utilizza una di queste due modalità di formattazione tramite cout.setf poi precisione() imposta il numero di cifre decimali dopo il punto decimale (non il numero complessivo di cifre) ma si perde la formattazione delle migliaia. Anche zeri finali (come erano abilitati da ios_base:: showpoint ) si abilitano automaticamente senza necessità showpoint.

Ti aspetteresti qualcosa del valore di 11.0909090909. In effetti, il valore è 11. Perchè è questo? perché il espressione sul lato destro (noto come un rvalue) è intero / intero. Quindi usa l'aritmetica intera che getta via la parte frazionaria e assegna 11 a f. Modificandolo in

In C, non esiste un tipo come a bool. Le espressioni in C erano basate su uno zero che era falso o che uno diverso da zero era vero. In C ++ il tipo bool può prendere i valori vero o falso. Questi valori sono ancora equivalenti a 0 e 1. Da qualche parte nel compilatore avrà un

O almeno si comporta in questo modo! Le due linee sottostanti sono valide senza casting, quindi dietro le quinte, i bool sono convertiti implicitamente in ints e possono anche essere incrementati o decrementati sebbene questa sia una brutta pratica.

L'if eseguirà comunque l'if poiché la variabile non valida è diversa da zero ma è un codice errato e deve essere evitata. La buona pratica è usarli nel modo previsto. if (! v) è C ++ valido ma preferisco il più esplicito if (v! = 0). Questo, tuttavia, è una questione di gusti, non a dover fare direttiva.

è meglio che il compilatore rilevi errori in fase di compilazione rispetto all'utente in fase di esecuzione