diff options
author | ache <ache@ache.one> | 2018-12-13 20:28:36 +0100 |
---|---|---|
committer | ache <ache@ache.one> | 2018-12-13 20:28:36 +0100 |
commit | 4597c93ee0cd193b86532f441095a11ab04885e1 (patch) | |
tree | 9346f6ba5172f9f282599663c6ef9cb0cc3b6d94 | |
parent | Remplace type of code block (diff) | |
parent | Add support for grid table (diff) |
Merge branch 'master' of srv:git/ache.one
-rw-r--r-- | article/bizarrerie-du-langage-c.md | 6 | ||||
-rw-r--r-- | package.json | 1 |
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", |