summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorache <ache@ache.one>2018-12-13 20:28:36 +0100
committerache <ache@ache.one>2018-12-13 20:28:36 +0100
commit4597c93ee0cd193b86532f441095a11ab04885e1 (patch)
tree9346f6ba5172f9f282599663c6ef9cb0cc3b6d94
parentRemplace type of code block (diff)
parentAdd support for grid table (diff)
Merge branch 'master' of srv:git/ache.one
-rw-r--r--article/bizarrerie-du-langage-c.md6
-rw-r--r--package.json1
2 files changed, 3 insertions, 4 deletions
diff --git a/article/bizarrerie-du-langage-c.md b/article/bizarrerie-du-langage-c.md
index 5bc164f..db5c2f5 100644
--- a/article/bizarrerie-du-langage-c.md
+++ b/article/bizarrerie-du-langage-c.md
@@ -2,9 +2,7 @@ Les bizarreries du langage C
============================
![The C Programming Language logo](res/c_language.svg)
-
Le C est un langage à la syntaxe simple. Les seules complexités de ce langage viennent du fait qu'il agit de manière proche de la machine.
-
Pourtant, une partie des syntaxes autorisées par le C n'est pratiquement jamais enseignée. Attaquons-nous à ces cas mystérieux ! 🧞
>!attention
@@ -379,7 +377,7 @@ void foo( int n, int m, int tab[][m]) {
}
~~~
-À noter qu'il est possible d'utiliser le caractère `\*` (encore une utilisation de plus) en lieu et place de la taille d'une ou plusieurs dimensions d'un VLA, mais *uniquement* au sein d'un prototype.
+À noter qu'il est possible d'utiliser le caractère `*` (encore une utilisation de plus) en lieu et place de la taille d'une ou plusieurs dimensions d'un VLA, mais *uniquement* au sein d'un prototype.
~~~c
void foo(int, int, int[][*]);
@@ -408,7 +406,7 @@ printf("%zu", sizeof(a*2.)); // Affiche 8
printf("%zu", sizeof b++); // Affiche 8
~~~
-Le premier résultat n'est pas très surprenant, la taille d'un `char` est défini à 1 *byte* et `sizeof(char)` doit retourner 1. Le deuxième résultat est la taille d'un `int`[^machine]. Le troisième résultat est la taille d'un `float`[^machine]. Le quatrième est la taille d'un `double`[^machine] qui est le type de l'expression `a\*2.`[^float]. Le dernier résultat est la taille d'un `size_t`[^machine], `size_t` étant le type de l'expression `b++`.
+Le premier résultat n'est pas très surprenant, la taille d'un `char` est défini à 1 *byte* et `sizeof(char)` doit retourner 1. Le deuxième résultat est la taille d'un `int`[^machine]. Le troisième résultat est la taille d'un `float`[^machine]. Le quatrième est la taille d'un `double`[^machine] qui est le type de l'expression `a*2.`[^float]. Le dernier résultat est la taille d'un `size_t`[^machine], `size_t` étant le type de l'expression `b++`.
Ici, je ne me suis pas intéressé à la valeur des expressions et pour cause, `sizeof` ne s'y intéresse pas non plus. Ces valeurs sont déterminées à la compilation. Les opérations que l'on retrouve dans l'expression passé à `sizeof` ne sont pas effectuées. Puisque l'expression doit être valide, son type doit être déterminé à la compilation. Le résultat de `sizeof` étant alors connu à la compilation, il n'y avait aucune raison d'exécuter l'expression.
diff --git a/package.json b/package.json
index 6e43d40..1fb0321 100644
--- a/package.json
+++ b/package.json
@@ -6,6 +6,7 @@
"rehype-raw": "^2.0.0",
"rehype-stringify": "^3.0.0",
"remark": "^8.0.0",
+ "remark-grid-tables": "^1.2.0",
"remark-highlight.js": "^5.0.0",
"remark-html": "^6.0.1",
"remark-kbd": "^1.0.6",