summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorache <ache@ache.one>2018-04-14 03:30:47 +0200
committerache <ache@ache.one>2018-04-14 03:30:47 +0200
commit069f646614c12bd6c5a99856428bc04cb9f4f33b (patch)
treec081f7d7da1f037166191f319f60517ac235fa0a
parentQuickfix math (diff)
Modification de l'article langage C
-rw-r--r--article/bizarrerie-du-langage-c.md17
1 files changed, 10 insertions, 7 deletions
diff --git a/article/bizarrerie-du-langage-c.md b/article/bizarrerie-du-langage-c.md
index 9126c94..81d0137 100644
--- a/article/bizarrerie-du-langage-c.md
+++ b/article/bizarrerie-du-langage-c.md
@@ -13,7 +13,10 @@ Attaquons nous à ces cas mystérieux !
### Les opérateurs inusités
-Il existe deux opérateurs dans le langage C qui ne sont pratiquement jamais utilisés.
+Il existe beaucoups d'opérateurs dans le langage C. Ici, nous allons parler particulièrement de deux d'entre eux qui ne sont pratiquement jamais enseignés.
+
+#### L'opérateur virgule
+
Le premier est l'opérateur virgule.
En C la virgule sert à séparer factoriser les éléments d'une définition ou séparer les éléments d'une fonction. En bref, c'est un élément de ponctuation.
Mais pas seulement ! C'est également un opérateur.
@@ -59,7 +62,7 @@ while( (c = getchar()) != EOF && c != '\n' ) {
Mais surtout, ne pas abuser de cet opérateur ! On peut, de manière assez rapide, obtenir des choses illisibles.
Cette remarque est d'ailleurs également valide pour le prochain opérateur !
-### L'opérateur ternaire
+#### L'opérateur ternaire
Le ternaire pour les intimes. Le seul opérateur du langage C qui prenne 3 opérandes.
Il sert à simplifier des expressions conditionnelles.
@@ -197,7 +200,7 @@ Si on veut seulement une initialisation ; Puisque l'initialisation d'un tableau
int tab[10] = {0, 0, 5};
```
-Mais en fait, il existe une autre syntaxe qui permet de faire plus simple :
+Mais en réalité, il existe une autre syntaxe qui permet de faire plus simple :
```c
int tab[10] = {[2] = 5};
```
@@ -286,7 +289,7 @@ printf("%d", tab[i]); // Avec i égale à quelque chose >=0 et <5
Cependant, je ne l'utilise qu'une seule fois ce tableau ...
C'est pas cool d'avoir à utiliser un identificateur juste pour ça.
-Et bien je peux faire ça :
+Et bien je peux faire ceci :
```c
printf("%d", ((int[]){5,4,5,2,1}) [i] ); // Avec i égale à quelque chose >=0 et <5
```
@@ -321,7 +324,7 @@ De même ceci n'est pas valide :
((int[]){1,2,3})[0] = 0;
```
-On appele donc ces expressions des compound literals.
+On appelle donc ces expressions des compound literals.
Ou une expression littérale composée si l'on s'essaye à traduire.
@@ -554,7 +557,7 @@ while( count-- > 0 )
En divisant par 8 (nombre arbitraire) on divise également par 8 le nombre de tests et de décrémentations.
Cependant, si `count` n'est pas divisible par 8, on a un problème, on ne fait pas toutes les instructions.
-Se serrait bien de pouvoir sauter directement à la 2em instruction, si on a seulement 6 instructions restantes.
+Ce serrait bien de pouvoir sauter directement à la 2em instruction, si on a seulement 6 instructions restantes.
Et c'est là que les étiquettes peuvent nous aider !
Grâce au `switch` on peut sauter directement à la bonne instruction.
@@ -581,7 +584,7 @@ On pouvait alors remplacer la caractère '#' par la séquence "??=".
Et pour chaque caractère composé, il existait une séquence à base de "??".
Voici une image des séquences de trigraphe et de leur représentation en caractère.
-![Trigraphes](res/digraphe_c.png)
+![Trigraphes](res/trigraphe_c.png)
Il existe également des digraphes. C'est à peu près la même chose mais en deux caractères :