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
Xsolo?
Sì, posso farlo se lo faccio:
#define X 5.2
Ora posso scrivere il mio programma senza dire al compilatore il tipo di Xcome:
#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, Xnon è una variabile, ma una costante, quindi viene letteralmente sostituito essere preprocessore con 5.2qualsiasi punto menzionato X. Non puoi riassegnare X.
autorealtà 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 allafloatprecisione, quindi li aggiunge come float, mentre il secondo arrotonda di nuovo la doppia rappresentazione di 5.1doublee la aggiunge aldoublevalore 5.2 usando adddouble, quindi arrotonda il risultato di quel calcolo allafloatprecisione . 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.