priorite
This commit is contained in:
@@ -43,6 +43,7 @@ Sa syntaxe de base a inspiré de nombreux langages plus récents dont C++, Java
|
|||||||
- [Opérateurs d'affectation](opérateurs/affectation.md)
|
- [Opérateurs d'affectation](opérateurs/affectation.md)
|
||||||
- [Opérateurs arithmétiques](opérateurs/arithmétiques.md)
|
- [Opérateurs arithmétiques](opérateurs/arithmétiques.md)
|
||||||
- [Opérateurs logiques](opérateurs/logique.md)
|
- [Opérateurs logiques](opérateurs/logique.md)
|
||||||
|
- [Opérateurs de comparaison](opérateurs/compataison.md)
|
||||||
- [Opérateurs bit à bit](opérateurs/bit.md)
|
- [Opérateurs bit à bit](opérateurs/bit.md)
|
||||||
|
|
||||||
### Les instructions
|
### Les instructions
|
||||||
|
|||||||
44
histoire.md
Normal file
44
histoire.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Histoire du langage C
|
||||||
|
|
||||||
|
Le langage C a été créé au début des années 1970 par Dennis Ritchie et Ken Thompson aux laboratoires Bell (AT&T) pour réécrire le système d'exploitation UNIX, qui était initialement en langage d'assemblage.
|
||||||
|
|
||||||
|
### Langage C original
|
||||||
|
|
||||||
|
La première version du C sort en 1972. Elle était étroitement liée au développement d'UNIX. Son adoption rapide a fait de C le langage privilégié pour développer des systèmes d'exploitation et des logiciels nécessitant des performances et une gestion fine de la mémoire.
|
||||||
|
|
||||||
|
### K & R C
|
||||||
|
|
||||||
|
En 1978, Brian Kernighan et Dennis Ritchie publient le livre de référence "The C Programming Language". C'est la première formalisation du langage C. Ce standard a dominé jusqu'au milieu des années 1980. Il introduisait des concepts tels que les types de données, les structures.
|
||||||
|
|
||||||
|
### ANSI C ou C89
|
||||||
|
|
||||||
|
Dans les années 1980, le besoin d'un standard plus formel s'est fait sentir, car plusieurs versions divergentes de C étaient utilisées. En 1989, l'ANSI (American National Standards Institute) publie le standard ANSI C ou C89. Cette version standardise plusieurs éléments du langage.
|
||||||
|
|
||||||
|
### C90
|
||||||
|
|
||||||
|
Le standard C89 est adopté par l'ISO (International Organization for Standardization) en 1990, sous le nom de C90. Les deux versions, ANSI C et C90, sont donc pratiquement identiques.
|
||||||
|
|
||||||
|
### C99
|
||||||
|
|
||||||
|
En 1999, une révision majeure du langage a été publiée sous le nom de C99. Cette version introduit de nombreuses améliorations, dont :
|
||||||
|
|
||||||
|
- La prise en charge des variables déclarées à n'importe quel endroit du code, pas seulement au début d'un bloc.
|
||||||
|
- Les tableaux dynamiques et les types entiers plus précis.
|
||||||
|
- Les boucles for avec des variables locales.
|
||||||
|
- De nouvelles fonctions mathématiques et des améliorations sur la précision des nombres flottants.
|
||||||
|
|
||||||
|
### C11
|
||||||
|
|
||||||
|
En 2011, le standard C11 apporte des améliorations pour le rendre plus moderne tout en conservant sa simplicité. Il introduit :
|
||||||
|
|
||||||
|
- Le support des threads avec une bibliothèque standard pour le multi-threading.
|
||||||
|
- La gestion des alignements mémoire.
|
||||||
|
- De nouvelles fonctionnalités de sécurité
|
||||||
|
|
||||||
|
### C18
|
||||||
|
|
||||||
|
En 2018, C18 qui est une version mineure qui clarifie et corrige certaines ambiguïtés du C11 sans ajouter de nouvelles fonctionnalités significatives. Elle se concentre essentiellement sur la correction de bugs et des révisions formelles du langage.
|
||||||
|
|
||||||
|
### C23
|
||||||
|
|
||||||
|
Le langage évolue encore. Les nouveautés sont très spécifiques à des cas d'utilisation trés poussés.
|
||||||
44
math.md
Normal file
44
math.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Fonctions mathématiques
|
||||||
|
|
||||||
|
Chaque fonction est déclinée en fonction du type de données utilisé pour le paramètre et la valeur de retour : double, float ou long double.
|
||||||
|
|
||||||
|
## Fonctions de calculs d'arrondis
|
||||||
|
|
||||||
|
Fonction | double | float | long double
|
||||||
|
---|---|--- | ---
|
||||||
|
Arrondi à l'entier le plus proche | `round` | `roundf` | `roundl`
|
||||||
|
Arrondi entier supérieur | `ceil` | `ceilf` | `ceill`
|
||||||
|
Arrondi entier inférieur | `floor` | `floorf` | `floorl`
|
||||||
|
Extraire la partie entière | `trunc` | `truncf` | `truncl`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Attention aux valeurs négatives ! La valeur plancher de -5.21 est -6 car -6 est inférieure à -5.21.
|
||||||
|
|
||||||
|
## Fonctions exponentielles et logarithmiques
|
||||||
|
|
||||||
|
Fonction | double | float | long double
|
||||||
|
---|---|--- | ---
|
||||||
|
Exponnentielle $e^{x}$ | `exp` | `expf` | `expl`
|
||||||
|
Logarithme naturel | `log` | `logf` | `logl`
|
||||||
|
|
||||||
|
## Fonctions trigonométriques
|
||||||
|
|
||||||
|
Fonction | double | float | long double
|
||||||
|
---|---|--- | ---
|
||||||
|
Cosinus | `cos` | `cosf` | `cosl`
|
||||||
|
Sinus | `sin` | `sinf` | `sinl`
|
||||||
|
Tangente | `tan` | `tanf` | `tanl`
|
||||||
|
Arc cosinus | `acos` | `acosf` | `acosl`
|
||||||
|
Arc sinus | `asin` | `asinf` | `asinl`
|
||||||
|
Arc tangente | `atan` | `atanf` | `atanl`
|
||||||
|
|
||||||
|
## Fonctions hyperboliques
|
||||||
|
|
||||||
|
Fonction | double | float | long double
|
||||||
|
---|---|--- | ---
|
||||||
|
Cosinus | `cosh` | `coshf` | `coshl`
|
||||||
|
Sinus | `sinh` | `sinhf` | `sinhl`
|
||||||
|
Tangente | `tanh` | `tanhf` | `tanhl`
|
||||||
|
Arc cosinus | `acosh` | `acoshf` | `acoshl`
|
||||||
|
Arc sinus | `asinh` | `asinhf` | `asinhl`
|
||||||
|
Arc tangente | `atanh` | `atanhf` | `atanhl`
|
||||||
61
opérateurs.md
Normal file
61
opérateurs.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# Opérateurs
|
||||||
|
|
||||||
|
>Un **opérateur** est un symbole qui indique au programme qu'il faut effectuer des opérations mathématiques ou logiques spécifiques.
|
||||||
|
{class=definition}
|
||||||
|
|
||||||
|
## Opérateurs de signe
|
||||||
|
|
||||||
|
Supposons que la variable **a** a pour valeur 7
|
||||||
|
|
||||||
|
Opérateur | Description | Exemple
|
||||||
|
---|---|---
|
||||||
|
\+ | positif | a + -5 = 2
|
||||||
|
\− | inversion de signe | a − +5 = 2
|
||||||
|
|
||||||
|
## Opérateurs arithmétiques
|
||||||
|
|
||||||
|
Supposons que la variable **a** a pour valeur 7 et que la variable **b** la valeur 19 alors :
|
||||||
|
|
||||||
|
Opérateur | Description | Exemple
|
||||||
|
---|---|---
|
||||||
|
\+ | Addition | a + b = 26
|
||||||
|
− | Soustraction | a − b = -12
|
||||||
|
\* | Multiplication | a * b = 133
|
||||||
|
/ | Division | b / a = 2
|
||||||
|
% | Modulo, reste de la division entière | b % a = 5
|
||||||
|
++ | Opérateur d'incrémentation<br>augmente la valeur entière de 1. | a++ = 8
|
||||||
|
-- | Opérateur de décrémentation<br>diminue la valeur entière de 1. | a\-\- = 6
|
||||||
|
|
||||||
|
## Opérateurs relationnels
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Opérateurs logiques
|
||||||
|
|
||||||
|
Supposons que la variable **a** a pour valeur 1 et que la variable **b** la valeur 0 alors :
|
||||||
|
|
||||||
|
Opérateur | Description | Exemple
|
||||||
|
---|---|---
|
||||||
|
&& | **ET logique**. Si les deux opérandes sont différents de zéro, la condition devient vraie. | a && b est faux.
|
||||||
|
\|\| | **OU logique**. Si l'un des deux opérandes est différent de zéro, la condition devient vraie. | a \|\| b est vrai.
|
||||||
|
! | **NON logique**. Il est utilisé pour inverser l'état logique de son opérande. Si une condition est vraie, alors l'opérateur logique NON la rendra fausse. | !(a && b) est vrai.
|
||||||
|
|
||||||
|
En savoir plus sur les [opérateurs logiques](logique)
|
||||||
|
|
||||||
|
Supposons que la variable **a** a pour valeur 60 et que la variable **b** la valeur 13 alors :
|
||||||
|
|
||||||
|
En savoir plus sur les [opérateurs bit-à-bit](bit)
|
||||||
|
|
||||||
|
|
||||||
|
## Autres
|
||||||
|
|
||||||
|
Outre les opérateurs évoqués ci-dessus, il existe quelques autres opérateurs importants.
|
||||||
|
|
||||||
|
Opérateur | Description | Exemple
|
||||||
|
---|---|---
|
||||||
|
sizeof() | Renvoie la taille d'une variable. sizeof(a), où a est un entier, renverra 4.
|
||||||
|
& | Renvoie l'adresse d'une variable. &a renvoie l'adresse réelle de la variable.
|
||||||
|
\* | Pointeur de la variable *a;
|
||||||
|
? : | Expression conditionnelle.
|
||||||
28
opérateurs/comparaison.md
Normal file
28
opérateurs/comparaison.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Opérateurs relationnels ou de comparaison
|
||||||
|
|
||||||
|
### Égalité
|
||||||
|
|
||||||
|
`==` Vérifie si les valeurs de deux opérandes sont égales ou non. Si oui, alors la condition devient vraie (1).
|
||||||
|
|
||||||
|
### Différent
|
||||||
|
|
||||||
|
`!=` Vérifie si les valeurs de deux opérandes sont égales ou non. Si les valeurs ne sont pas égales, la condition devient vraie (1).
|
||||||
|
|
||||||
|
### Supérieur
|
||||||
|
|
||||||
|
`>` Vérifie si la valeur de l'opérande gauche est supérieure à la valeur de l'opérande droit. Si oui, alors la condition devient vraie (1).
|
||||||
|
|
||||||
|
### Inférieur
|
||||||
|
|
||||||
|
`<` Vérifie si la valeur de l'opérande gauche est inférieure à la valeur de l'opérande droit. Si oui, alors la condition devient vraie (1).
|
||||||
|
|
||||||
|
### Supérieur ou égal
|
||||||
|
|
||||||
|
`>=` Vérifie si la valeur de l'opérande gauche est supérieure ou égale à la valeur de l'opérande droit. Si oui, alors la condition devient vraie (1).
|
||||||
|
|
||||||
|
### Inférieur ou égal
|
||||||
|
|
||||||
|
`<=` Vérifie si la valeur de l'opérande gauche est inférieure ou égale à la valeur de l'opérande droit. Si oui, alors la condition devient vraie (1).
|
||||||
|
|
||||||
|
Le résultat des opérateurs conditionnels sont 1 pour la condition vraie et 0 pour la condition fausse;
|
||||||
|
|
||||||
25
opérateurs/priorite.md
Normal file
25
opérateurs/priorite.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
## Priorité et ordre d'évaluation
|
||||||
|
|
||||||
|
La priorité des opérateurs détermine le groupement des termes dans une expression et décide comment une expression est évaluée. Certains opérateurs ont une priorité plus élevée que d'autres ; par exemple, l'opérateur de multiplication a une priorité plus élevée que l'opérateur d'addition.
|
||||||
|
|
||||||
|
Par exemple, x = 7 + 3 * 2; ici, x est assigné à 13, pas 20 parce que * a une priorité plus élevée que +. On effecture d'abord la multiplication 3 * 2, puis on ajoute 7.
|
||||||
|
|
||||||
|
Les opérateurs avec la plus haute priorité apparaissent en haut du tableau, ceux avec la plus basse apparaissent en bas. Dans une expression, les opérateurs de priorité supérieure seront évalués en premier.
|
||||||
|
|
||||||
|
Categorie | Opérateurs | Associativité
|
||||||
|
--- |---|---
|
||||||
|
Préfixe | () [] -> . ++ \-\- | de gauche à droite
|
||||||
|
Unaire | + - ! ~ ++ \-\- (type)* & sizeof | de droite à gauche
|
||||||
|
Multiplicative | * / % | de gauche à droite
|
||||||
|
Additive | + - | de gauche à droite
|
||||||
|
Décallage | << >> | de gauche à droite
|
||||||
|
Relationnelle | < <= > >= | de gauche à droite
|
||||||
|
Égalité | == != | de gauche à droite
|
||||||
|
Et binaire | & | de gauche à droite
|
||||||
|
Ou exclusif | ^ | de gauche à droite
|
||||||
|
Ou binaire | \| | de gauche à droite
|
||||||
|
Et logique | && | de gauche à droite
|
||||||
|
Ou logique | \|\| | de gauche à droite
|
||||||
|
Ternaire | ?: | de droite à gauche
|
||||||
|
Assignation | = += -= *= /= %=>>= <<= &= ^= \|= |de droite à gauche
|
||||||
|
Séquence | , | de gauche à droite
|
||||||
Reference in New Issue
Block a user