summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorache <ache@ache.one>2018-04-14 03:30:56 +0200
committerache <ache@ache.one>2018-04-14 03:30:56 +0200
commitb1507dc23f609ba1e5c0d77f826c0c354a829395 (patch)
tree9c4ff75049e39e5811b80485d10298de2b9c04c1
parentModification de l'article langage C (diff)
parentStyle enhancement (diff)
Merge branch 'master' of /home/ache/git/ache.one
-rw-r--r--article/bizarrerie-du-langage-c.md28
-rwxr-xr-xdesign/contenu.css15
2 files changed, 34 insertions, 9 deletions
diff --git a/article/bizarrerie-du-langage-c.md b/article/bizarrerie-du-langage-c.md
index 81d0137..de2c299 100644
--- a/article/bizarrerie-du-langage-c.md
+++ b/article/bizarrerie-du-langage-c.md
@@ -11,7 +11,8 @@ Attaquons nous à ces cas mystérieux !
> Pour comprendre ce billet, il est nécessaire d'avoir des bases dans un langage ayant une syntaxe et un fonctionnement proche du C.
-### Les opérateurs inusités
+Les opérateurs inusité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.
@@ -21,6 +22,8 @@ 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.
+### L'opérateur virgule
+
L'instruction suivante, bien qu'inutile est tout à fait valide :
```c
@@ -113,7 +116,8 @@ Et voilà ! Deux opérateurs qui vont désormais gagner un peu d'intérêt.
Et surtout être mieux compris !
Puis d'ailleurs, même les opérateurs qu'on connait déjà, on n'en maîtrise pas forcément la syntaxe.
-### L'accès à un tableau
+L'accès à un tableau
+------------------
On nous a toujours appris que pour afficher le 3em élément d'un tableau, on faisait :
@@ -169,7 +173,8 @@ En somme, tout le monde écrit `tab[3]` et pas `3[tab]`. Du coup, il n'y a aucun
Mais c'est toujours bien de savoir que ça existe. ^^
-### L'initialisation
+L'initialisation
+---------------
L'initialisation, c'est quelque chose qu'on maîtrise en C. C'est le fait de donner une valeur à une variable lors de sa déclaration.
En gros, on définit sa valeur.
@@ -276,7 +281,8 @@ Comme ici, dans ce décodeur de base64 :
Source: [Taurre](https://openclassrooms.com/forum/sujet/defis-8-tout-en-base64-19054?page=1#message-6921633)
-### Les expressions littéralement composées
+Les expressions littéralement composées
+--------------------------------------
Puisque nous parlons des tableaux. Il existe une syntaxe simple pour utiliser des tableaux constants.
@@ -328,7 +334,8 @@ On appelle donc ces expressions des compound literals.
Ou une expression littérale composée si l'on s'essaye à traduire.
-### Les VLAs
+Les VLAs
+--------
Les tableaux à taille variable (ou *Variable Length Arrays* en anglais, soit VLAs) sont des tableaux dont la taille n'est connue qu'à la compilation. Si vous n'avez jamais entendu parler des VLAs, ceci devrait vous choquer :
@@ -393,7 +400,8 @@ Humm, curieux effet de bord. Il y a deux choses assez intéressantes dans ce cod
La deuxième chose intéressante est le fait que foo prenne en argument un tableau à taille variable, mais qu'on lui passe en paramètre un tableau de taille fixe ! En fait, on aurait pu écrire n'importe quelle expression qui retourne un entier.
Ces deux points sont causés par les VLAs. Voyons ça plus doucement.
-### La définition d'un type VLA
+La définition d'un type VLA
+---------------------------
Pour définir une fonction qui prend un tableau d'entiers de taille `N` en paramètre, on peut simplement faire :
@@ -468,7 +476,8 @@ Mais ça reste bien moins pratique que l'utilisation de VLAs.
Mais alors une dernière question reste en suspens. Peut-on utiliser cette astuce pour des tableaux 2D qui ne sont pas des VLAs. À cela il existe une réponse simple. Un tableau reste un tableau, son agencement en mémoire est le même. Du coup, pas de problème à utiliser un tableau à deux dimensions fixes dans une fonction qui prend en paramètre un VLA.
-### Une histoire d'étiquettes
+Une histoire d'étiquettes
+------------------------
En C, s'il y a un truc dont on ne doit pas parler, ce sont bien les *étiquettes*.
On les utilses avec la structure de contrôle `goto` ! L'interdite !
@@ -572,7 +581,8 @@ D'ailleurs, c'est une optimisation d'un autre temps.
Mais comme je voulais vous parler de syntaxe alors, il était nécessaire de parlez des étiquettes.
-### Les caractères trop spéciaux
+Les caractères trop spéciaux
+---------------------------
On va remonter encore dans le temps.
Je vais vous citer une dernière chose.
@@ -614,7 +624,7 @@ printf("%d", a ?5??((tab):>:0);
**À ne jamais utiliser dans un code sérieux** donc.
-### Conclusion
+## Conclusion
Voilà, c'est fini, j'espère que vous avez appris quelque chose de ce billet.
Surtout n'oubliez pas d'utiliser ces syntaxes avec parcimonie;
diff --git a/design/contenu.css b/design/contenu.css
index f940d20..043504a 100755
--- a/design/contenu.css
+++ b/design/contenu.css
@@ -10,6 +10,21 @@ article h3 {
font-size:1.25em;
color: #AC4;
}
+article h2:before {
+ content: "# ";
+ color: #ABB;
+ font: bold 1em arial, sans-serif;
+}
+article h3:before {
+ content: "## ";
+ color: #ABB;
+ font: bold 1em arial, sans-serif;
+}
+article h4:before {
+ content: "### ";
+ color: #ABB;
+ font: bold 1em arial, sans-serif;
+}
section > p:nth-of-type(1) {
}
section > p:nth-of-type(1):after {