Di solito in C, dobbiamo dire al computer il tipo di dati nella dichiarazione variabile. Ad esempio nel seguente programma, voglio stampare la somma di due numeri in virgola mobile X e Y.
#include<stdio.h>
main()
{
float X=5.2;
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
Ho dovuto dire al compilatore il tipo di variabile X.
- Il compilatore non può determinare il tipo da
X
solo?
Sì, posso farlo se lo faccio:
#define X 5.2
Ora posso scrivere il mio programma senza dire al compilatore il tipo di X
come:
#include<stdio.h>
#define X 5.2
main()
{
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
Quindi vediamo che il linguaggio C ha un qualche tipo di funzionalità, usando la quale può determinare il tipo di dati da solo. Nel mio caso ha determinato che X
è di tipo float.
- Perché dobbiamo menzionare il tipo di dati, quando dichiariamo qualcosa in main ()? Perché il compilatore non può determinare da solo il tipo di dati di una variabile
main()
come fa#define
?
#define X 5.2
, X
non è una variabile, ma una costante, quindi viene letteralmente sostituito essere preprocessore con 5.2
qualsiasi punto menzionato X
. Non puoi riassegnare X
.
auto
realtà fa quello che vuoi). D'altra parte, se pensi di sapere cosa sta facendo il tuo codice e in realtà hai digitato qualcos'altro, la digitazione statica come questa rileverà un errore prima, prima che diventi un grosso problema. Ogni lingua raggiunge un equilibrio: tipizzazione statica, inferenza di tipo, digitazione dinamica. Per alcune attività, la digitazione extra vale davvero la pena. Per altri, è uno spreco.
5.2
è undouble
, quindi il primo programma arrotonda i doppi letterali allafloat
precisione, quindi li aggiunge come float, mentre il secondo arrotonda di nuovo la doppia rappresentazione di 5.1double
e la aggiunge aldouble
valore 5.2 usando adddouble
, quindi arrotonda il risultato di quel calcolo allafloat
precisione . Poiché l'arrotondamento si verifica in luoghi diversi, il risultato potrebbe essere meno intenso. Questo è solo un esempio per i tipi di variabili che influenzano il comportamento di un programma altrimenti identico.