C/Variabili, operatori e costanti/Variabili: differenze tra le versioni

Wikibooks, manuali e libri di testo liberi.
Contenuto cancellato Contenuto aggiunto
Wiso (discussione | contributi)
Wiso (discussione | contributi)
Nessun oggetto della modifica
Riga 3: Riga 3:




Una '''variabile''' in [[w:C (linguaggio)|C]] (e in programmazione in generale) è uno spazio di memoria che contiene un valore.
Una '''variabile''' in [[w:C (linguaggio)|C]] (e in programmazione in generale) è uno spazio di memoria che contiene un valore. Una variabile ha un nome che viene usato nella programmazione per riferirsi a un certo particolare spazio di memoria.


==Dichiarazione==
==I tipi di variabili==
Per essere usata una variabile va prima dichiarata. La dichiarazione è la seguente:
Ad ogni variabile in C deve essere associato un tipo, quindi quando si dichiara una variabile bisogna specificare di che tipo è. In C le [[w:Variabile (informatica)|variabili]] possono essere di 5 tipi base:
* <tt>int</tt>: sono i numeri interi.
* <tt>float</tt>: sono i numeri a virgola mobile (in inglese "floating-point") a precisione singola.
* <tt>double</tt>: sono i numeri a virgola mobile a precisione doppia.
* <tt>char</tt>: sono le variabili che contengono un carattere.
* <tt>void</tt>: il non-tipo: non si possono creare variabili void, ma questo tipo è usato per dichiarare [[Linguaggio C:Vettori e puntatori/Puntatori|puntatori]] generici (che possono puntare a qualunque tipo di dati) e per definire funzioni che non restituiscono alcun valore.


tipo nome_variabile;
==Sintassi==
Ecco la sintassi per dichiarare le variabili di ciascun tipo:


che dichiara una variabile il cui nome <code>nome_variabile</code> e il cui tipo è <code>tipo</code>. Per esempio se vogliamo dichiarare una variabile di tipo intero possiamo farlo nel seguente modo:
int numeroIntero;
float numeroInVirgolaMobile;
double numeroInVirgolaMobileDoppio;
char carattere;


int numero;
È possibile assegnare un valore alle variabili sia alla creazione che successivamente, in questo modo:


dove <code>int</code> è un tipo di variabile usato per rappresentare i numeri interi. È possibile dichiarare più variabili dello stesso tipo su una sola riga per esempio:
int numeroIntero=valore;
float numeroInVirgolaMobile=valore;
double numeroInVirgolaMobileDoppio=valore;
char carattere=valore;
//Istruzioni varie...
numeroIntero=valore;
numeroInVirgolaMobile=valore;
numeroInVirgolaMobileDoppio=valore;
carattere=valore;


int a,b;
Inoltre si possono dichiarare anche più variabili dello stesso tipo in un unica istruzione separandole con virgole:


dichiara due variabili di tipo <code>int</code>. Le varibili possono essere inizializzate durante la dichiarazione:
tipo var1, var2, varN;

int c = 1;

se non si inizializza una variabile si dice che il suo valore è indeterminato, nel senso che non si può dire che cosa contenga. Tipicamente una variabile non inizializzata contiene ''garbage'', spazzatura, cioè contiene quello che è presente nel suo indirizzo al momento dell'allocazione. Alcuni compilatori azzerano le variabili appena dichiarate. Poiché il comportamento del compilatore in genere non è noto, e poiché il nostro programma dovrà essere compatibile col maggior numero di compilatori il programma dovrà inizializzare le varibili prima dell'uso. Se si dichiarano più variabili sulla stessa riga possono essere o meno inizializzate:

int d, e = 2;

che crea due variabili, ma solo la seconda è inizializzata

int f = 1, g = 2;

tutte e due sono inizializzate.

==Assegnazione==

Con l'operatore di assegnazione <code>=</code> si assegna ad una variabile un particolare valore:

int a;
a = 1;

la variabile a è dichiarata di tipo intero e successivamente gli viene assegnato il valore 1. Ad una variabile può essere assegnato il valore di un'altra variabile:

int b,c = 0;
b = c;

entrambe le variabili valgono 0.

L'assegnamento può essere fatto anche per più variabili contemporaneamente:

int x,y;
x = y = 2;
Ad entrambe le variabili viene assegnato il valore 2.

==I tipi di variabili==
Ad ogni variabile in C deve essere associato un tipo, quindi quando si dichiara una variabile bisogna specificare sempre di che tipo è. In C le [[w:Variabile (informatica)|variabili]] possono essere di 5 tipi base:
* <tt>int</tt>: sono i numeri interi.
* <tt>float</tt>: sono i numeri a virgola mobile (in inglese "floating-point") a precisione singola.
* <tt>double</tt>: sono i numeri a virgola mobile a precisione doppia.
* <tt>char</tt>: sono le variabili che contengono un carattere.
* <tt>void</tt>: il non-tipo: non si possono creare variabili void, ma questo tipo è usato per dichiarare [[Linguaggio C:Vettori e puntatori/Puntatori|puntatori]] generici (che possono puntare a qualunque tipo di dati) e per definire funzioni che non restituiscono alcun valore.


==Esempi d'uso==
==Esempi d'uso==


int numeroIntero=45;
int numeroIntero = 45;
float numeroInVirgolaMobile=54.78;
float numeroInVirgolaMobile = 54.78;
double numeroInVirgolaMobileDoppio=34.567;
double numeroInVirgolaMobileDoppio = 34.567;
char carattere='a';
char carattere = 'a';
printf("La variabile intera è uguale a %d", numeroIntero);
printf("La variabile intera è uguale a %d", numeroIntero);
numeroIntero=54;
numeroIntero = 54;
numeroInVirgolaMobile=78.9;
numeroInVirgolaMobile = 78.9;
numeroInVirgolaMobileDoppio=179.678;
numeroInVirgolaMobileDoppio = 179.678;
carattere='b';
carattere = 'b';


==Opzioni==
==Opzioni==
È possibile utilizzare delle opzioni quando si dichiarano le variabili per ottenere speciali comportamenti.
È possibile utilizzare delle opzioni quando si dichiarano le variabili per ottenere speciali comportamenti.


===Const===
===const===
Il comando <tt>const</tt> dichiara delle costanti, ovvero dei nomi assegnati in modo fisso a dei valori. In pratica sono come delle macro, solo che non accettano funzioni come valore.
Il comando <tt>const</tt> dichiara delle costanti, ovvero dei nomi assegnati in modo fisso a dei valori. In pratica sono come delle macro, solo che non accettano funzioni come valore.


Riga 63: Riga 85:
Inoltre le variabili const sono anche usate come parametri delle [[Linguaggio C/Blocchi e funzioni/Funzioni|funzioni]] per assicurarsi che all'interno della funzione il valore di una variabile non possa subire variazioni.
Inoltre le variabili const sono anche usate come parametri delle [[Linguaggio C/Blocchi e funzioni/Funzioni|funzioni]] per assicurarsi che all'interno della funzione il valore di una variabile non possa subire variazioni.


const int dieci=10;
const int dieci = 10;
printf("Il numero è %d", dieci);
printf("Il numero è %d", dieci);


===Volatile===
===volatile===


Il comando <tt>volatile</tt> indica che il valore di una variabile potrebbe essere cambiato da eventi esterni, in modo che si possano prevenire eventuali errori.
Il comando <tt>volatile</tt> indica che il valore di una variabile potrebbe essere cambiato da eventi esterni, in modo che si possano prevenire eventuali errori.
Riga 72: Riga 94:
volatile int laMiaVariabile=14;
volatile int laMiaVariabile=14;


===Static===
===static===


===Register===
===register===


L'istruzione <tt>register</tt> indica che una variabile dovrà essere utilizzata molto e richiede al compilatore di memorizzarla in un registro della [[w:CPU|CPU]] o comunque di velocizzarne l'accesso. Questo comando potrebbe venire ignorato dal compilatore se il registro della CPU è troppo pieno.
L'istruzione <tt>register</tt> indica che una variabile dovrà essere utilizzata molto e richiede al compilatore di memorizzarla in un registro della [[w:CPU|CPU]] o comunque di velocizzarne l'accesso. Questo comando potrebbe venire ignorato dal compilatore se il registro della CPU è troppo pieno.


register int i=1;
register int i = 1;
for (i=1; i<=10; i++)
for (i=1; i<=10; i++)
printf("Il numero è %d \n", i);
printf("Il numero è %d \n", i);

Versione delle 18:09, 30 mar 2006

Template:Stub Template:Linguaggio C


Una variabile in C (e in programmazione in generale) è uno spazio di memoria che contiene un valore. Una variabile ha un nome che viene usato nella programmazione per riferirsi a un certo particolare spazio di memoria.

Dichiarazione

Per essere usata una variabile va prima dichiarata. La dichiarazione è la seguente:

 tipo nome_variabile;

che dichiara una variabile il cui nome nome_variabile e il cui tipo è tipo. Per esempio se vogliamo dichiarare una variabile di tipo intero possiamo farlo nel seguente modo:

 int numero;

dove int è un tipo di variabile usato per rappresentare i numeri interi. È possibile dichiarare più variabili dello stesso tipo su una sola riga per esempio:

 int a,b;

dichiara due variabili di tipo int. Le varibili possono essere inizializzate durante la dichiarazione:

 int c = 1;

se non si inizializza una variabile si dice che il suo valore è indeterminato, nel senso che non si può dire che cosa contenga. Tipicamente una variabile non inizializzata contiene garbage, spazzatura, cioè contiene quello che è presente nel suo indirizzo al momento dell'allocazione. Alcuni compilatori azzerano le variabili appena dichiarate. Poiché il comportamento del compilatore in genere non è noto, e poiché il nostro programma dovrà essere compatibile col maggior numero di compilatori il programma dovrà inizializzare le varibili prima dell'uso. Se si dichiarano più variabili sulla stessa riga possono essere o meno inizializzate:

 int d, e = 2;

che crea due variabili, ma solo la seconda è inizializzata

 int f = 1, g = 2;

tutte e due sono inizializzate.

Assegnazione

Con l'operatore di assegnazione = si assegna ad una variabile un particolare valore:

 int a;
 a = 1;

la variabile a è dichiarata di tipo intero e successivamente gli viene assegnato il valore 1. Ad una variabile può essere assegnato il valore di un'altra variabile:

 int b,c = 0;
 b = c;

entrambe le variabili valgono 0.

L'assegnamento può essere fatto anche per più variabili contemporaneamente:

 int x,y;
 x = y = 2;
 

Ad entrambe le variabili viene assegnato il valore 2.

I tipi di variabili

Ad ogni variabile in C deve essere associato un tipo, quindi quando si dichiara una variabile bisogna specificare sempre di che tipo è. In C le variabili possono essere di 5 tipi base:

  • int: sono i numeri interi.
  • float: sono i numeri a virgola mobile (in inglese "floating-point") a precisione singola.
  • double: sono i numeri a virgola mobile a precisione doppia.
  • char: sono le variabili che contengono un carattere.
  • void: il non-tipo: non si possono creare variabili void, ma questo tipo è usato per dichiarare puntatori generici (che possono puntare a qualunque tipo di dati) e per definire funzioni che non restituiscono alcun valore.

Esempi d'uso

int numeroIntero = 45;
float numeroInVirgolaMobile = 54.78;
double numeroInVirgolaMobileDoppio = 34.567;
char carattere = 'a';

printf("La variabile intera è uguale a %d", numeroIntero);

numeroIntero = 54;
numeroInVirgolaMobile = 78.9;
numeroInVirgolaMobileDoppio = 179.678;
carattere = 'b';

Opzioni

È possibile utilizzare delle opzioni quando si dichiarano le variabili per ottenere speciali comportamenti.

const

Il comando const dichiara delle costanti, ovvero dei nomi assegnati in modo fisso a dei valori. In pratica sono come delle macro, solo che non accettano funzioni come valore.

Si può usare anche la direttiva #define per ottenere lo stesso risultato, ma in generale l'uso di const è preferibile.

Inoltre le variabili const sono anche usate come parametri delle funzioni per assicurarsi che all'interno della funzione il valore di una variabile non possa subire variazioni.

const int dieci = 10;
printf("Il numero è %d", dieci);

volatile

Il comando volatile indica che il valore di una variabile potrebbe essere cambiato da eventi esterni, in modo che si possano prevenire eventuali errori.

volatile int laMiaVariabile=14;

static

register

L'istruzione register indica che una variabile dovrà essere utilizzata molto e richiede al compilatore di memorizzarla in un registro della CPU o comunque di velocizzarne l'accesso. Questo comando potrebbe venire ignorato dal compilatore se il registro della CPU è troppo pieno.

register int i = 1;
for (i=1; i<=10; i++)
 printf("Il numero è %d \n", i);

Long

Short

Signed

Unsigned