C - Variables

Une variable n'est rien d'autre qu'un nom donné à une zone de stockage que nos programmes peuvent manipuler. Chaque variable en C a un type spécifique, qui détermine la taille et la disposition de la mémoire de la variable; la plage de valeurs pouvant être stockées dans cette mémoire; et l'ensemble des opérations qui peuvent être appliquées à la variable.

Le nom d'une variable peut être composé de lettres, de chiffres et du caractère de soulignement. Il doit commencer par une lettre ou un trait de soulignement. Les lettres majuscules et minuscules sont distinctes car C est sensible à la casse. Sur la base des types de base expliqués dans le chapitre précédent, il y aura les types de variables de base suivants -

N ° Sr. Type et description
1

char

Généralement un seul octet (un octet). C'est un type entier.

2

int

La taille entière la plus naturelle de la machine.

3

float

Une valeur à virgule flottante simple précision.

4

double

Une valeur à virgule flottante double précision.

5

void

Représente l'absence de type.

Le langage de programmation C permet également de définir divers autres types de variables, que nous aborderons dans les chapitres suivants comme Enumeration, Pointer, Array, Structure, Union, etc. Pour ce chapitre, étudions uniquement les types de variables de base.

Définition de variable en C

Une définition de variable indique au compilateur où et combien de stockage créer pour la variable. Une définition de variable spécifie un type de données et contient une liste d'une ou plusieurs variables de ce type comme suit -

type variable_list;

Ici, typedoit être un type de données C valide, y compris char, w_char, int, float, double, bool ou tout objet défini par l'utilisateur; etvariable_listpeut consister en un ou plusieurs noms d'identificateurs séparés par des virgules. Certaines déclarations valides sont affichées ici -

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

La ligne int i, j, k;déclare et définit les variables i, j et k; qui demandent au compilateur de créer des variables nommées i, j et k de type int.

Les variables peuvent être initialisées (affectées d'une valeur initiale) dans leur déclaration. L'initialiseur se compose d'un signe égal suivi d'une expression constante comme suit -

type variable_name = value;

Quelques exemples sont -

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'.

Pour une définition sans initialiseur: les variables avec une durée de stockage statique sont implicitement initialisées avec NULL (tous les octets ont la valeur 0); la valeur initiale de toutes les autres variables n'est pas définie.

Déclaration de variable en C

Une déclaration de variable fournit l'assurance au compilateur qu'il existe une variable avec le type et le nom donnés afin que le compilateur puisse poursuivre la compilation sans avoir besoin des détails complets sur la variable. Une définition de variable n'a sa signification qu'au moment de la compilation, le compilateur a besoin d'une définition de variable réelle au moment de la liaison du programme.

Une déclaration de variable est utile lorsque vous utilisez plusieurs fichiers et que vous définissez votre variable dans l'un des fichiers qui seront disponibles au moment de la liaison du programme. Vous utiliserez le mot-cléexternpour déclarer une variable à n'importe quel endroit. Bien que vous puissiez déclarer une variable plusieurs fois dans votre programme C, elle ne peut être définie qu'une seule fois dans un fichier, une fonction ou un bloc de code.

Exemple

Essayez l'exemple suivant, où les variables ont été déclarées en haut, mais elles ont été définies et initialisées dans la fonction 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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

value of c : 30
value of f : 23.333334

Le même concept s'applique à la déclaration de fonction où vous fournissez un nom de fonction au moment de sa déclaration et sa définition réelle peut être donnée n'importe où ailleurs. Par exemple -

// function declaration
int func();

int main() {

   // function call
   int i = func();
}

// function definition
int func() {
   return 0;
}

Lvalues ​​et Rvalues ​​en C

Il existe deux types d'expressions en C -

  • lvalue- Les expressions qui font référence à un emplacement mémoire sont appelées expressions "lvalue". Une lvalue peut apparaître comme le côté gauche ou droit d'une affectation.

  • rvalue- Le terme rvalue fait référence à une valeur de données qui est stockée à une certaine adresse en mémoire. Une rvalue est une expression qui ne peut pas avoir de valeur assignée, ce qui signifie qu'une rvalue peut apparaître sur le côté droit mais pas sur le côté gauche d'une affectation.

Les variables sont des valeurs l et peuvent donc apparaître sur le côté gauche d'une affectation. Les littéraux numériques sont des valeurs r et ils peuvent donc ne pas être affectés et ne peuvent pas apparaître sur le côté gauche. Jetez un œil aux instructions valides et non valides suivantes -

int g = 20; // valid statement

10 = 20; // invalid statement; would generate compile-time error