< Manipuler des valeurs | TutoCFrench | Les opérateurs binaires >
Notions :
Dans la leçon précédente, nous avons brièvement vu quelques types de données. Ce chapitre passe en revue les autres types fondamentaux.
char
, qui sert à stocker des caractères imprimables, stocke en réalité un petit entier codé sur un octet. La table de correspondance entre ces petits entiers et les caractères imprimables s'appelle la table des caractères ASCII. Par exemple, le caractère ASCII 'a'
a pour valeur ASCII 97
.
Il est donc tout à fait correct d'écrire une expression comme 'a' + 2
puisque 'a'
est en réalité un entier.
short int
pour stocker des petits entiers.
int
pour stocker des entiers.
long int
pour stocker des entiers plus grands.
float
et double
pour stocker des nombres réels.
Remarque : il n'existe pas de type "chaîne de caractères". Pour ce faire, on utilise les tableaux.
Les types, comme int
sont signés par défaut, ce qui signifie que ce type permet de stocker des valeurs positives et négatives.
Le mot-clef unsigned
permet de définir un type comme étant non-signé, c'est à dire que la variable pourra stocker uniquement des valeurs positives.
Sur certaines architectures, les char
sont non-signés par défaut ! Il est possible de les signer avec la directive signed
.
La directive const
permet d'empêcher la modification d'une variable donnée. Le contrôle se fait au moment de la compilation :
const int i = 70; /* i ne pourra etre modifie */ i++; /* interdit ! */
Notions avancées concernant les pointeurs:
const char *p; /* pointeur sur constante */ char * const p; /* pointeur constant */
Type | Octets | Portée |
---|---|---|
char | 1 | -128 à +127 |
short int | 2 | -32768 à +32767 |
int | 4 | -2 147 483 648 à +2 147 483 647 |
long int | 8 | -4294967296 à +4294967295 |
unsigned char | 1 | 0 +255 |
unsigned short int | 2 | 0 à +65535 |
unsigned int | 4 | 0 à +4 294 967 295 |
unsigned long int | 8 | |
float | 4 | |
double | 8 |
Une conversion explicite d'une valeur stockée dans une variable est faite de la façon suivante :
(nouveau_type) variable;
Par exemple :
int a = 3, b = 6; float c; c = (float) a + (float) b;
Mais il existe aussi un certain nombre de conversions implicites :
int
et un float
, l'int
est converti en un float
int
, il y a aussi une conversion de la valeur dans ce type (ce qui peut altèrer le résultat)
Exemple :
int c; float pi = 3.14159, r = 4.21; c = pi * r;
Un nombre utilisé dans une expression s'appelle une constante littérale. Par défaut, elle est de type int
mais il est possible d'utiliser des constantes littérales de n'importe quel autre type :
Exemple | Type |
---|---|
5 | int |
5u ou 5U | unsigned |
5l ou 5L | long |
5ul | unsigned long |
05 | octal |
0x5 | hexadecimal |
5.f | float |
5. | double |
Exemple :
#include<stdio.h> int main() { unsigned short a=65535; a++; printf("%d\n", a); return 0; }
#include <stdio.h> int main() { int a; printf("> "); scanf("%d", &a); printf("%X\n", a); return 0; }
#include <stdio.h> int main() { int a; printf("> "); scanf("%x", &a); printf("%d\n", a); return 0; }
< Manipuler des valeurs | TutoCFrench | Les opérateurs binaires >