C - Variabili
Una variabile non è altro che un nome dato a un'area di memoria che i nostri programmi possono manipolare. Ogni variabile in C ha un tipo specifico, che determina la dimensione e il layout della memoria della variabile; l'intervallo di valori che possono essere memorizzati all'interno di quella memoria; e l'insieme di operazioni che possono essere applicate alla variabile.
Il nome di una variabile può essere composto da lettere, cifre e il carattere di sottolineatura. Deve iniziare con una lettera o un trattino basso. Le lettere maiuscole e minuscole sono distinte perché C distingue tra maiuscole e minuscole. In base ai tipi di base spiegati nel capitolo precedente, ci saranno i seguenti tipi di variabili di base:
Sr.No. | Tipo e descrizione |
---|---|
1 | char Tipicamente un singolo ottetto (un byte). È un tipo intero. |
2 | int La dimensione più naturale del numero intero per la macchina. |
3 | float Un valore in virgola mobile a precisione singola. |
4 | double Un valore in virgola mobile a precisione doppia. |
5 | void Rappresenta l'assenza di tipo. |
Il linguaggio di programmazione C permette anche di definire vari altri tipi di variabili, che tratteremo nei capitoli successivi come Enumeration, Pointer, Array, Structure, Union, ecc. Per questo capitolo, studiamo solo i tipi di variabili di base.
Definizione variabile in C
Una definizione di variabile indica al compilatore dove e quanto spazio di archiviazione creare per la variabile. Una definizione di variabile specifica un tipo di dati e contiene un elenco di una o più variabili di quel tipo come segue:
type variable_list;
Qui, typedeve essere un tipo di dati C valido che includa char, w_char, int, float, double, bool o qualsiasi oggetto definito dall'utente; evariable_listpuò essere costituito da uno o più nomi di identificatori separati da virgole. Alcune dichiarazioni valide sono mostrate qui -
int i, j, k;
char c, ch;
float f, salary;
double d;
La linea int i, j, k;dichiara e definisce le variabili i, j e k; che istruiscono il compilatore a creare variabili denominate i, j e k di tipo int.
Le variabili possono essere inizializzate (assegnato un valore iniziale) nella loro dichiarazione. L'inizializzatore è costituito da un segno di uguale seguito da un'espressione costante come segue:
type variable_name = value;
Alcuni esempi sono:
extern int d = 3, f = 5; // declaration of d and f.
int d = 3, f = 5; // definition and initializing d and f.
byte z = 22; // definition and initializes z.
char x = 'x'; // the variable x has the value 'x'.
Per la definizione senza un inizializzatore: le variabili con durata di memorizzazione statica vengono inizializzate implicitamente con NULL (tutti i byte hanno il valore 0); il valore iniziale di tutte le altre variabili non è definito.
Dichiarazione delle variabili in C
Una dichiarazione di variabile fornisce la garanzia al compilatore che esiste una variabile con il tipo e il nome dati in modo che il compilatore possa procedere per un'ulteriore compilazione senza richiedere i dettagli completi sulla variabile. Una definizione di variabile ha il suo significato solo al momento della compilazione, il compilatore necessita della definizione di variabile effettiva al momento del collegamento del programma.
Una dichiarazione di variabile è utile quando si utilizzano più file e si definisce la variabile in uno dei file che saranno disponibili al momento del collegamento del programma. Userai la parola chiaveexternper dichiarare una variabile in qualsiasi posto. Sebbene tu possa dichiarare una variabile più volte nel tuo programma C, può essere definita solo una volta in un file, una funzione o un blocco di codice.
Esempio
Prova il seguente esempio, dove le variabili sono state dichiarate in alto, ma sono state definite e inizializzate all'interno della funzione principale -
#include <stdio.h>
// Variable declaration:
extern int a, b;
extern int c;
extern float f;
int main () {
/* variable definition: */
int a, b;
int c;
float f;
/* actual initialization */
a = 10;
b = 20;
c = a + b;
printf("value of c : %d \n", c);
f = 70.0/3.0;
printf("value of f : %f \n", f);
return 0;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
value of c : 30
value of f : 23.333334
Lo stesso concetto si applica alla dichiarazione di funzione in cui si fornisce un nome di funzione al momento della sua dichiarazione e la sua definizione effettiva può essere fornita altrove. Ad esempio:
// function declaration
int func();
int main() {
// function call
int i = func();
}
// function definition
int func() {
return 0;
}
Lvalues e Rvalues in C
Ci sono due tipi di espressioni in C:
lvalue- Le espressioni che fanno riferimento a una posizione di memoria sono chiamate espressioni "lvalue". Un lvalue può essere visualizzato sia come lato sinistro che come lato destro di un compito.
rvalue- Il termine rvalue si riferisce a un valore di dati archiviato in un indirizzo in memoria. Un rvalue è un'espressione a cui non può essere assegnato un valore, il che significa che un rvalue può apparire sul lato destro ma non sul lato sinistro di un compito.
Le variabili sono i valori e quindi possono apparire sul lato sinistro di un compito. I letterali numerici sono rvalues e quindi potrebbero non essere assegnati e non possono essere visualizzati sul lato sinistro. Dai un'occhiata alle seguenti affermazioni valide e non valide:
int g = 20; // valid statement
10 = 20; // invalid statement; would generate compile-time error