Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Variables et types C++ :int, double, char, string, bool

Variables en C++

Une variable C++ nous fournit une capacité de stockage nommée. Il permet au programmeur de manipuler les données selon les besoins. Chaque variable a un type en C++. Le type de variable aide à déterminer la taille et la disposition de la carte mémoire de la variable, la plage de valeurs qui peuvent être stockées dans cette mémoire et l'ensemble des opérations qui peuvent lui être appliquées.

Dans ce didacticiel C++, vous apprendrez :

Types de base des variables en C++

Voici les types de base des variables C++ :

Entier :

Un entier est un littéral numérique (associé à des nombres) sans aucune partie fractionnaire ou exponentielle. Exemple. 120, -90, etc.

Double :

Il s'agit d'une valeur à virgule flottante double précision. Exemple :11.22, 2.345

Caractère :

Un littéral de caractère est créé en plaçant un seul caractère entre guillemets simples. Par exemple :'a', 'm', 'F', 'P', '}' etc.

Flottant :

Un littéral à virgule flottante est un littéral numérique qui a soit une forme fractionnaire, soit une forme exposant. Par exemple :1.3, 2.6

Littéraux de chaîne :

Un littéral de chaîne est une séquence de caractères entre guillemets doubles. Par exemple :"Comment allez-vous ?"

Bool :

Il contient la valeur booléenne true ou false.

Règles de déclaration de variables en C++

Voici quelques règles courantes pour nommer une variable :

Types de données variables C++

C++ définit tout un ensemble de types primitifs

Le vide type n'a pas de valeur associée et ne peut être utilisé que dans quelques circonstances. Il s'agit le plus souvent du type de retour des fonctions qui ne retournent pas de valeur.

Les types arithmétiques inclure des caractères, des entiers, des valeurs booléennes et des nombres à virgule flottante. Type arithmétique s'il est divisé en 2 catégories

  1. Types à virgule flottante . Les flottants (ou de type flottant) représentent des nombres décimaux. La norme IEEE spécifie un nombre minimum de chiffres significatifs. La plupart des compilateurs fournissent généralement plus de précision que le minimum spécifié. En règle générale, les flottants sont représentés par 32 bits, les doubles par 64 bits et les longs doubles par 96 ou 128 bits.
  2. Types intégraux (qui incluent des caractères, des entiers et des types booléens). Le booléen type n'a que deux types de valeurs :True ou False. Il y a plusieurs char types, dont la plupart existent pour prendre en charge l'internationalisation. Le type de caractère le plus basique est char. Un caractère a la même taille qu'un seul octet de machine, ce qui signifie un seul octet.

Les types intégraux peuvent être signés ou non signés.

Type signé :Ils représentent des nombres négatifs ou positifs (y compris zéro). Dans un type signé, la plage doit être répartie de manière égale entre les valeurs +ve et -ve. Ainsi, un caractère signé 8 bits contiendra des valeurs comprises entre -127 et 127.

Type non signé :Dans un type non signé, toutes les valeurs sont>=0. Un caractère non signé 8 bits peut contenir de 0 à 255 (les deux inclus).

Nom de variable ou identifiants

Les identificateurs peuvent être composés de lettres, de chiffres et du caractère de soulignement ou d'une combinaison de ceux-ci. Aucune limite n'est imposée sur la longueur du nom.

Les identifiants doivent

// définit quatre variables int différentes

int guru99, gurU99, GuRu99, GURU99;

Le langage C++ a réservé certains noms pour son utilisation.

Il existe de nombreuses conventions acceptées pour nommer les variables dans différents langages de programmation. Le respect de ces conventions peut améliorer la lisibilité du programme.

Déclaration et définition de variable C++

Une déclaration d'une variable fait connaître un nom au programme dans la portée dans laquelle elle est définie. Exemple :

int a=5;
int b;
char c='A'; 
int a,b;
a=b=1000;
List initialization
int a(5);
int b{5};

Qualificateur Const en C++

Supposons qu'il y ait une variable buffsize qui indique le nombre d'entrées à prendre de l'utilisateur. Ici, nous ne voulons pas changer la valeur de buffsize tout au long du programme. Nous voulons définir une variable dont nous savons que la valeur ne devrait pas changer.

Dans ce cas, utilisez le mot clé const

const int bufSize = 512;    // input buffer size

Cela définit bufSize comme une constante. Toute tentative d'attribution ou de modification de bufSize génère une erreur.

Ici, nous ne pouvons pas changer la valeur d'un objet const après l'avoir créé, il doit obligatoirement être déclaré et initialisé. Sinon, le compilateur renvoie une erreur.

const int i = get_size();  // ok: initialized at run time
const int j = 42;          // ok: initialized at compile time
const int k;               // error: k is uninitialized const
int i = 42;
const int ci = i;    	   // ok: the value in i is copied into ci 

Portée des variables en C++

Une portée est une étendue d'un programme où une variable a une signification. La plupart du temps, le même nom peut être utilisé pour désigner différentes entités dans différentes portées. Les variables sont visibles depuis le point où elles sont déclarées jusqu'à la fin de la portée dans laquelle leur déclaration apparaît.

#include <iostream>	
int main()	
{	
    int sum = 0;	
    // sum values from 1 through 10 inclusive	
    for (int val = 1; val <= 10; ++val)	
        sum += val;  // equivalent to sum = sum + val	
    cout << "Sum of 1 to 10 inclusive is "<< sum <<endl;	
    return 0;	
}	 

Ce programme définit 3 noms, à savoir, main, sum et val. Il utilise le nom d'espace de noms std, ainsi que deux autres noms de cet espace de noms :cout et endl.

Portée imbriquée

La portée peut contenir d'autres portées. La portée contenue (ou imbriquée) est appelée portée interne. La portée contenante est la portée externe.

#include <iostream>	
using namespace std;	
// Program for illustration purposes only: It is bad style for a function	
// to use a global variable and also define a local variable with the same name	
int reused = 42;  // reused has global scope	
int main()	
{	
    int unique = 0; // unique has block scope	
    // output #1: uses global reused; prints 42 0	
    cout << reused << " " << unique << endl;	
    int reused = 0; // new, local object named reused hides global reused	
    // output #2: uses local reused; prints 0 0	
    cout << reused << " " << unique << endl;	
    // output #3: explicitly requests the global reused; prints 42 0	
    cout << ::reused << " " << unique << endl;	
    return 0;	
}	 

Résultat #1 apparaît avant la définition locale de réutilisé. Ainsi, cette sortie

L'instruction est celle qui utilise le nom réutilisé qui est défini dans la portée globale. Cette instruction affiche

42 0

Résultat #2 se produit après la définition locale de réutilisé. Il est maintenant dans la portée. Par conséquent, cette deuxième instruction de sortie utilise simplement l'objet local nommé réutilisé plutôt que l'objet global et les sorties

0 0

Résultat #3 remplace les règles de portée par défaut à l'aide de l'opérateur de portée. La portée globale n'a pas de nom. Ainsi, lorsque l'opérateur de portée (::) a un côté gauche vide. Il l'interprète comme une demande de récupération du nom sur le côté droit de la portée globale. Ainsi, l'expression utilise le global réutilisé et affiche

42 0

Conversion de types de variables

Une variable d'un type peut être convertie en un autre. C'est ce qu'on appelle la "conversion de type". Voyons les règles de conversion des différents types de variables C++ :

L'affectation de non booléen à une variable booléenne donne faux si la valeur est 0 et vrai sinon.

bool b = 42;            // b is true

L'affectation d'un booléen à l'un des autres types arithmétiques donne 1 si le booléen est vrai et 0 si le booléen est faux.

bool b = true;
int i = b;              // i has value 1

L'affectation d'une valeur à virgule flottante à une variable de type int donne la valeur qui est tronquée. La valeur stockée est la partie avant la virgule décimale.

int i = 3.14;               // i has value 3

L'affectation d'une valeur int à une variable de type flottant a pour effet que la partie fractionnaire devient nulle. La précision est généralement perdue si l'entier a plus de bits que la variable flottante ne peut en contenir.

Int i=3;
double pi = i;          // pi has value 3.0

Si on essaie d'assigner une valeur hors limites à une variable de type non signé, le résultat est le reste de la valeur %(modulo)

Par exemple, un type char non signé 8 bits peut contenir des valeurs comprises entre 0 et 255 inclus. L'attribution d'une valeur en dehors de cette plage entraînera l'attribution par le compilateur du reste de cette valeur modulo 256. Par conséquent, selon la logique ci-dessus, l'attribution de –1 à un caractère non signé de 8 bits donne à cet objet la valeur 255.

unsigned char c = -1;   // assuming 8-bit chars, c has value 255

Si nous essayons d'attribuer une valeur hors plage à un objet de type signé, le résultat est imprévisible. C'est indéfini. Le programme peut sembler fonctionner à l'extérieur, ou il peut planter, ou il peut produire des valeurs erronées.

signed char c2 = 256;   // assuming 8-bit chars, the value of c2 is undefined

Le compilateur applique ce même type de conversions lorsque nous utilisons une valeur d'un type alors qu'une valeur d'un autre type est attendue.

int i = 42;
if (i) // condition will evaluate as true
i = 0; 

Si cette valeur =0, alors la condition est fausse; toutes les autres valeurs (non nulles) donnent true. Selon le même concept, lorsque nous utilisons un booléen dans une expression arithmétique, sa valeur est toujours convertie en 0 ou 1. Par conséquent, l'utilisation d'un booléen dans une expression arithmétique est généralement presque certainement incorrecte.

Attention :ne mélangez pas les types signés et non signés

Les expressions qui mélangent signé et non signé peuvent produire des résultats surprenants et erronés lorsque la valeur signée est négative. Comme indiqué ci-dessus, les valeurs signées sont automatiquement converties en valeurs non signées.

Par exemple, dans une expression arithmétique comme

x* y

Si x est -1 et y est 1, et si x et y sont int, alors la valeur est, comme prévu, -1.

Si x est un entier et y n'est pas signé, alors la valeur de cette expression dépend du nombre de bits qu'un entier a sur la machine compilatrice. Sur notre machine, cette expression donne 4294967295.

Enregistrer les variables

Les variables de registres sont plus rapides d'accès que les variables de mémoire. Ainsi, les variables fréquemment utilisées dans un programme C++ peuvent être placées dans des registres à l'aide de register mot-clé. Le mot clé register indique au compilateur de stocker la variable donnée dans un registre. C'est au compilateur de choisir de le mettre dans un registre ou non. Généralement, les compilateurs eux-mêmes effectuent diverses optimisations, notamment en plaçant certaines des variables dans le registre. Il n'y a pas de limite au nombre de variables de registre dans un programme C++. Mais le compilateur ne peut pas stocker la variable dans un registre. En effet, la mémoire de registre est très limitée et est généralement utilisée par le système d'exploitation.

Pour définir :

register int i;

Commentaires

Les commentaires sont les parties du code ignorées par le compilateur. Il permet au programmeur de prendre des notes dans les zones pertinentes du code source/programme. Les commentaires se présentent soit sous forme de bloc, soit sur une seule ligne. Les commentaires du programme sont des déclarations explicatives. Il peut être inclus dans le code C++, ce qui aide toute personne lisant son code source. Tous les langages de programmation autorisent une certaine forme de commentaires. C++ prend en charge les commentaires sur une seule ligne et sur plusieurs lignes.

/* This is a comment */
/* C++ comments can  also 
* span multiple lines 
*/

Séquences d'échappement

Certains caractères, tels que les caractères de retour arrière et de contrôle, n'ont pas d'image visible. Ces caractères sont appelés caractères non imprimables. D'autres caractères (guillemets simples et doubles, point d'interrogation et barre oblique inverse) ont une signification particulière dans de nombreux langages de programmation.

Nos programmes ne peuvent utiliser aucun de ces caractères directement. Au lieu de cela, nous pouvons utiliser une séquence d'échappement pour représenter un tel char. Une séquence d'échappement commence par une barre oblique inverse.

Le langage de programmation C++ définit plusieurs séquences d'échappement :

Que fait-il ? Personnage

Nouvelle ligne

\n

Onglet vertical

\v

Barre oblique inverse

\\

Retour chariot

\r

Onglet horizontal

\t

Retour arrière

\b

Point d'interrogation

\ ?

Saut de page

\f

Alerte (cloche)

\a

Guillemet double

\”

Guillemet simple

\'

Nous utilisons une séquence d'échappement comme s'il s'agissait d'un seul caractère :

cout << '\n';        // prints a newline
cout << "\tguru99!\n";   // prints a tab followed by "guru99!" and a newline 

Nous pouvons également écrire des séquences d'échappement généralisées \x suivies d'un ou plusieurs chiffres hexadécimaux. Ou nous utilisons un \ suivi d'un, ou deux, ou trois chiffres octaux. La séquence d'échappement généralisée représente la valeur numérique du caractère. Quelques exemples (en supposant que le jeu de caractères Latin-1) :

\7 (bell)    \12 (newline)      \40 (blank)
\0 (null)    \115 ('M')         \x4d ('M') 

Nous pouvons utiliser des séquences d'échappement prédéfinies, comme nous utilisons n'importe quel autre caractère.

cout << "Hi \x4dO\115!\n";  // prints Hi MOM! followed by a newline
cout << '\115' << '\n';     // prints M followed by a newline 

Résumé


Langue C

  1. Variables C# et types de données (primitifs)
  2. Variables, littéraux et constantes C++
  3. Types de données C++
  4. C Variables, constantes et littéraux
  5. Types de données C
  6. Types de fonctions définies par l'utilisateur dans la programmation C
  7. Classe de stockage C
  8. Opérateurs en C++ avec exemple :qu'est-ce que c'est, les types et les programmes
  9. Java - Types de variables