{"id":1603,"date":"2025-06-26T11:36:29","date_gmt":"2025-06-26T10:36:29","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=1603"},"modified":"2025-12-01T12:18:30","modified_gmt":"2025-12-01T11:18:30","slug":"decouverte-du-c-ansi-par-kr","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/","title":{"rendered":"TP0_C D\u00e9couverte du C ANSI par K&amp;R"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\ud83d\udd52 : 3 h maximum<\/p>\n\n\n\n<nav aria-label=\"Table des mati\u00e8res\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#prerequis\">Pr\u00e9requis:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#but\">But:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#repertoire-du-travail\">R\u00e9pertoire du travail: <\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#1-bonjour-le-monde\">1 &#8211; Bonjour le monde !<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#1-1-saisir-le-code-avec-vi\">1-1 Saisir le code avec vi<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#1-2-compiler-et-corriger-votre-code-c-normalement-pas-besoin\">1-2 Compiler et corriger votre code c (normalement pas besoin !)<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#1-3-utilisation-de-gdb\">1-3 utilisation de gdb<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#1-4-run-de-gdb\">1-4 run de gdb <\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#1-5-breakpoint-br\">1-5 Breakpoint (br)<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#1-6-run-avec-un-point-d-arret\">1-6 run avec un point d&rsquo;arr\u00eat.<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#1-7-next\">1-7 next <\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#1-8-exit\">1-8 exit<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#2-les-limites\">2- les limites.<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#2-1-le-code-limits-c\">2-1 le code limits.c<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#2-2-donner-les-valeurs-max-et-min-de-tous-les-types-vu-dans-ce-code\">2-2 donner les valeurs max et min de tous les types vu dans ce code<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/#3-votre-travail-final-doit-ressembler-a\">3- Votre travail final doit ressembler \u00e0 :<\/a><\/li><\/ol><\/li><\/ol><\/nav>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequis\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cf2e2e\" class=\"has-inline-color\">Pr\u00e9requis:<\/mark><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cours <a href=\"https:\/\/workboot.fr\/ciela\/gcc\/\">gcc<\/a>, <a href=\"https:\/\/workboot.fr\/ciela\/gdb\/\">gdb<\/a> , <a href=\"https:\/\/workboot.fr\/ciela\/dennis-ritchie-et-brian-kernighan\/\">K&amp;R<\/a><\/li>\n\n\n\n<li>gestion <a href=\"https:\/\/workboot.fr\/ciela\/admin-systeme\/\">des fichiers sous linux<\/a><\/li>\n\n\n\n<li>utilisation de <a href=\"https:\/\/workboot.fr\/ciela\/vi-editeur-de-texte-sous-unix-linux\/\">vi<\/a><\/li>\n\n\n\n<li>Codage <a href=\"https:\/\/workboot.fr\/ciela\/le-complement-a-2\/\">compl\u00e9ment a 2 <\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"but\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cf2e2e\" class=\"has-inline-color\">But:<\/mark><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>prise en main de la cha\u00eene de compilation pour faire du c ansi avec GCC<\/li>\n\n\n\n<li>Afficher un caract\u00e8re (char)<\/li>\n\n\n\n<li>Afficher une cha\u00eene de caract\u00e8re (string) <\/li>\n\n\n\n<li>utilisation de gdb , pas \u00e0 pas .<\/li>\n\n\n\n<li>Afficher une valeur enti\u00e8re et comprendre les limites des variables (char, int , long )<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"repertoire-du-travail\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#cf2e2e\" class=\"has-inline-color\">R\u00e9pertoire du travail: <\/mark><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">~\/Works\/TP0_C <\/p>\n\n\n\n<pre>etudiant@ordi:~\/Works$ tree TP0_C\/\n<font color=\"#12488B\"><b>TP0_C\/<\/b><\/font>\n\u251c\u2500\u2500 <font color=\"#12488B\"><b>bonjour<\/b><\/font>\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 <font color=\"#26A269\"><b>bonjour<\/b><\/font>\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 bonjour.c\n\u2514\u2500\u2500 <font color=\"#12488B\"><b>limits<\/b><\/font>\n    \u251c\u2500\u2500 <font color=\"#26A269\"><b>limits<\/b><\/font>\n    \u2514\u2500\u2500 limits.c\n\n2 directories, 4 files\netudiant@ordi:~\/Works$\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1-bonjour-le-monde\">1 &#8211; Bonjour le monde !<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Donc si vous avez bien \u00e9cout\u00e9 et compris, sur votre ordinateur vous disposez d&rsquo;un r\u00e9pertoire TP0_C dans votre r\u00e9pertoire Works de votre espace de travail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udd14 <strong>Rappel :<\/strong>  <strong>cd<\/strong> ou <strong>cd ~<\/strong>    vous am\u00e8ne dans votre espace de travail ou que vous soyez<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>mkdir<\/strong> pour make directory .. si vous avez oubli\u00e9 &#8230;c&rsquo;est grave attention !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Donc nous sommes actuellement dans le r\u00e9pertoire du TP0_C ok <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cr\u00e9er un r\u00e9pertoire projet bonjour.<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>pour cr\u00e9er le  r\u00e9pertoire bonjour !<\/summary>\n<p class=\"wp-block-paragraph\">mkdir bonjour<\/p>\n<\/details>\n\n\n\n<p class=\"wp-block-paragraph\">dans ce r\u00e9pertoire recopier le code suivant : bonjour.c <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/***********************************\/\n\/* Code en c de bonjour le monde ! *\/\n\/*                                 *\/\n\/* Date: 27\/06\/2025                *\/\n\/* Auteur: BoGt                    *\/\n\/***********************************\/\n#include &lt;stdlib.h&gt;\n#include &lt;stdio.h&gt;\n\nint main()\n{\n\tprintf(\"Bonjour le monde ! \\n\");\n\treturn EXIT_SUCCESS;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on peut noter<strong> \/*<\/strong> et <strong>*\/<\/strong> encadre du commentaire en c Ansi , beaucoup pensent \u00e0 tort que les commentaires ne sont pas utile car effectivement ils ne font pas mieux fonctionner votre code ! Mais nous ne sommes pas des machines , les commentaires sont la pour nous aider \u00e0 mieux poser nos id\u00e9es , et \u00e0 mieux communiquer nos id\u00e9es. C&rsquo;est une qualit\u00e9 \u00e0 bien d\u00e9velopper pour un codeur ! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par exemple , ici on sait ce que fait notre code , et qui l&rsquo;as produit et quand&#8230;. pas du luxe !  La notation de vos codes en d\u00e9pendra pour pas mal de points. Prenez de bonnes habitudes ! ne pas s&rsquo;en priver !<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-1-saisir-le-code-avec-vi\">1-1 Saisir le code avec vi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">il faut avoir lu le <a href=\"https:\/\/workboot.fr\/ciela\/vi-editeur-de-texte-sous-unix-linux\/\" data-type=\"page\" data-id=\"1378\">cours vi <\/a> et le <a href=\"https:\/\/workboot.fr\/ciela\/tp-vi\/\" data-type=\"page\" data-id=\"1375\">tp  vi.<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-2-compiler-et-corriger-votre-code-c-normalement-pas-besoin\">1-2 Compiler et corriger votre code c (normalement pas besoin !)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Saisir le code c , bonjour.c .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">vous disposez d&rsquo;un fichier bonjour.c (comme celui ci-dessus) dans votre r\u00e9pertoire Works\/TP0_C<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pour le compiler comme vu dans le cours de c de<a href=\"https:\/\/workboot.fr\/ciela\/gcc\/\" data-type=\"page\" data-id=\"1076\"> gcc <\/a> il faut transformer le langage c en langage compr\u00e9hensible par la machine, pour simplifier le langage c appel\u00e9 langage \u00e9volu\u00e9 en langage machine des 0 et des 1 &#8230;que le processeur va bien comprendre!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ici dans notre apprentissage on est sur des processeurs de la famille INTEL (constructeur) X86. Le premier PC (personnal computeur) IBM etait fabriqu\u00e9 avec un 8086, qui a bien \u00e9volu\u00e9 avec le temps. Les ordinateurs PC ont une compatibilit\u00e9 ascendante. Les programmes du premier PC doivent toujours fonctionner sur le dernier core I9 &#8230;.de Intel, et je n&rsquo;\u00e9voque pas les clones de AMD&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">on appel cette phase la compilation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gcc bonjour.c -o bonjour <mark style=\"background-color:rgba(0, 0, 0, 0);color:#cf2e2e\" class=\"has-inline-color\">-Wall -ansi -pedantic -lc -g<\/mark><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">les options de compilation <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>-Wall , pour Warning All<\/li>\n\n\n\n<li>-ansi  pour n&rsquo;accepter que du code ansi <\/li>\n\n\n\n<li>-pedantic    ,p\u00e9dagogique va vous forcer \u00e0 \u00e9crire un code p\u00e9dagigique .<\/li>\n\n\n\n<li>-g   pour pouvoir utiliser le d\u00e9bugger (l&rsquo;outil du codeur)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">mais vous pouvez vous cr\u00e9er quelques erreurs et voir les messages, et corriger !<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -l\ntotal 28\n-rwxrwxr-x 1 bruno bruno 15960 juin  29 17:55 bonjour\n-rw-rw-r-- 1 bruno bruno   132 juin  29 17:54 bonjour.c\n\u279c  bonjour <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Quand la phase de compilation se passe bien , c&rsquo;est \u00e0 dire que gcc (le compilateur) comprend votre code sans aucune ind\u00e9termination ou ambigu\u00eft\u00e9<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">si il ne comprends pas il va vous noter une erreur , sinon un warning (attention) et c&rsquo;est qu&rsquo;il aura pris une d\u00e9cision \u00e0 votre place et c&rsquo;est pas bon ! car ici l&rsquo;humain doit d\u00e9cider vu que c&rsquo;est son id\u00e9e! pas celle de la machine !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">compiler sans l&rsquo;option -g et avec , comparer la quantit\u00e9 en octets de vos executables.  (ls -l)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Donner une explication !<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-3-utilisation-de-gdb\">1-3 utilisation de gdb<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ici nous allons d\u00e9couvrir cet outil puissant qu&rsquo;est gdb , gnu debugger .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">il faut absolument compiler avec l&rsquo;option -g , sinon le debugger n&rsquo;a pas la main sur votre code ! -g va mettre des sondes logicielles pour pouvoir g\u00e9rer le code .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre>etudiant@ordi:~\/Works\/TP0_C\/bonjour$ gdb bonjour\n<font color=\"#A347BA\"><b>GNU gdb (Ubuntu 12.1-0ubuntu1~22.04.2) 12.1<\/b><\/font>\nCopyright (C) 2022 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later &lt;http:\/\/gnu.org\/licenses\/gpl.html&gt;\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\nType &quot;show copying&quot; and &quot;show warranty&quot; for details.\nThis GDB was configured as &quot;x86_64-linux-gnu&quot;.\nType &quot;show configuration&quot; for configuration details.\nFor bug reporting instructions, please see:\n&lt;https:\/\/www.gnu.org\/software\/gdb\/bugs\/&gt;.\nFind the GDB manual and other documentation resources online at:\n    &lt;http:\/\/www.gnu.org\/software\/gdb\/documentation\/&gt;.\n\nFor help, type &quot;help&quot;.\nType &quot;apropos word&quot; to search for commands related to &quot;word&quot;...\nReading symbols from <font color=\"#26A269\">bonjour<\/font>...\n(gdb) l\n1       <font color=\"#2AA1B3\">\/***********************************\/<\/font>\n2       <font color=\"#2AA1B3\">\/* Code en c de bonjour le monde ! *\/<\/font>\n3       <font color=\"#2AA1B3\">\/*                                 *\/<\/font>\n4       <font color=\"#2AA1B3\">\/* Date: 27\/06\/2025                *\/<\/font>\n5       <font color=\"#2AA1B3\">\/* Auteur: BoGt                    *\/<\/font>\n6       <font color=\"#2AA1B3\">\/***********************************\/<\/font>\n7       <font color=\"#12488B\"><b>#include<\/b><\/font> <font color=\"#C01C28\">&lt;stdlib.h&gt;<\/font>\n8       <font color=\"#12488B\"><b>#include<\/b><\/font> <font color=\"#C01C28\">&lt;stdio.h&gt;<\/font>\n9\n10      <font color=\"#26A269\">int<\/font> <b>main<\/b><font color=\"#C01C28\">()<\/font>\n(gdb) l\n11      <font color=\"#C01C28\">{<\/font>\n12              <b>printf<\/b><font color=\"#C01C28\">(&quot;Bonjour le monde ! <\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;);<\/font>\n13              <font color=\"#12488B\"><b>return<\/b><\/font> EXIT_SUCCESS<font color=\"#C01C28\">;<\/font>\n14      <font color=\"#C01C28\">}<\/font>\n(gdb)\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on a utilis\u00e9 la commande list (l)   pour voir ici avec colorations syntaxique notre code source  (le .c)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-4-run-de-gdb\">1-4 run de gdb <\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>(gdb) run\nStarting program: \/home\/etudiant\/Works\/TP0_C\/bonjour\/bonjour\n&#91;Thread debugging using libthread_db enabled]\nUsing host libthread_db library \"\/lib\/x86_64-linux-gnu\/libthread_db.so.1\".\nBonjour le monde !\n&#91;Inferior 1 (process 14000) exited normally]\n(gdb)           <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">le run execute le code ! et on remarque que le code se termine normalement ! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">on constate que gdb charge librairie dynamique libthread_db.so.1 dont ici nous n&rsquo;avons que faire !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">notre cha\u00eene s&rsquo;affiche bien comme voulu avec le retour \u00e0 la ligne !<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-5-breakpoint-br\">1-5 Breakpoint (br)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>(gdb) <strong>br main<\/strong>\nBreakpoint 1 at 0x555555555151: file bonjour.c, line 12.\n(gdb)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">breakpoint , point d&rsquo;arr\u00eat ! la contraction plus rapide \u00e0 taper est br .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ici on a plac\u00e9 un point d\u2019arr\u00eat \u00e0 la ligne 12 en indiquant le non de la fonction ou on veut s\u2019arr\u00eater. <strong>br 12<\/strong> aurait eu le m\u00eame r\u00e9sultat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ici c&rsquo;est dans la m\u00e9moire \u00e0 l&rsquo;adresse: 0x555555555151<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-6-run-avec-un-point-d-arret\">1-6 run avec un point d&rsquo;arr\u00eat.<\/h3>\n\n\n\n<pre>(gdb) br main\nBreakpoint 1 at <font color=\"#12488B\">0x555555555151<\/font>: file <font color=\"#26A269\">bonjour.c<\/font>, line 12.\n(gdb) run\nStarting program: <font color=\"#26A269\">\/home\/etudiant\/Works\/TP0_C\/bonjour\/bonjour<\/font>\n[Thread debugging using libthread_db enabled]\nUsing host libthread_db library &quot;<font color=\"#26A269\">\/lib\/x86_64-linux-gnu\/libthread_db.so.1<\/font>&quot;.\n\nBreakpoint 1, <font color=\"#A2734C\">main<\/font> () at <font color=\"#26A269\">bonjour.c<\/font>:12\n12              <b>printf<\/b><font color=\"#C01C28\">(&quot;Bonjour le monde ! <\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;);<\/font>\n(gdb)\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on arrive avant l&rsquo;ex\u00e9cution de la ligne 12. gdb attend vos ordres!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-7-next\">1-7 next <\/h3>\n\n\n\n<pre>Breakpoint 1, <font color=\"#A2734C\">main<\/font> () at <font color=\"#26A269\">bonjour.c<\/font>:12\n12              <b>printf<\/b><font color=\"#C01C28\">(&quot;Bonjour le monde ! <\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;);<\/font>\n(gdb) n\nBonjour le monde !\n13              <font color=\"#12488B\"><b>return<\/b><\/font> EXIT_SUCCESS<font color=\"#C01C28\">;<\/font>\n(gdb)\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">n pour next , possible aussi s comme step ! mais on verra par la suite qu&rsquo;il y a une diff\u00e9rence , next, ligne suivante ..step avance .. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">vous pouvez terminer le programme avec des nexts&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1-8-exit\">1-8 exit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">pour sortir de gdb et revenir \u00e0 bash<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2-les-limites\">2- les limites.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">dans un r\u00e9pertoire <strong>limits <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">la fonction <strong>sizeof<\/strong> nous donne la quantit\u00e9 en octets de la variable pass\u00e9 en argument.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-1-le-code-limits-c\">2-1 le code limits.c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">limits.c:<\/p>\n\n\n\n<pre><font color=\"#A347BA\">#include <\/font><font color=\"#C01C28\">&lt;stdio.h&gt;<\/font>\n<font color=\"#A347BA\">#include <\/font><font color=\"#C01C28\">&lt;stdlib.h&gt;<\/font>  <font color=\"#12488B\">\/* pour EXIT_SUCCESS, EXIT_FAILURE *\/<\/font>\n\n<font color=\"#26A269\">int<\/font> main() {\n\n        printf(<font color=\"#C01C28\">&quot;Taille de char            : <\/font><font color=\"#A347BA\">%lu<\/font><font color=\"#C01C28\"> octet(s)<\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;<\/font>, <font color=\"#A2734C\">sizeof<\/font>(<font color=\"#26A269\">char<\/font>)); <font color=\"#12488B\">\/* %lu long unsigned *\/<\/font>                                                                        \n        printf(<font color=\"#C01C28\">&quot;Taille de signed char     : <\/font><font color=\"#A347BA\">%lu<\/font><font color=\"#C01C28\"> octet(s)<\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;<\/font>, <font color=\"#A2734C\">sizeof<\/font>(<font color=\"#26A269\">signed<\/font> <font color=\"#26A269\">char<\/font>));\n        printf(<font color=\"#C01C28\">&quot;Taille de unsigned char   : <\/font><font color=\"#A347BA\">%lu<\/font><font color=\"#C01C28\"> octet(s)<\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;<\/font>, <font color=\"#A2734C\">sizeof<\/font>(<font color=\"#26A269\">unsigned<\/font> <font color=\"#26A269\">char<\/font>));\n\n        printf(<font color=\"#C01C28\">&quot;Taille de short           : <\/font><font color=\"#A347BA\">%lu<\/font><font color=\"#C01C28\"> octet(s)<\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;<\/font>, <font color=\"#A2734C\">sizeof<\/font>(<font color=\"#26A269\">short<\/font>));\n        printf(<font color=\"#C01C28\">&quot;Taille de unsigned short  : <\/font><font color=\"#A347BA\">%lu<\/font><font color=\"#C01C28\"> octet(s)<\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;<\/font>, <font color=\"#A2734C\">sizeof<\/font>(<font color=\"#26A269\">unsigned<\/font> <font color=\"#26A269\">short<\/font>));\n\n        printf(<font color=\"#C01C28\">&quot;Taille de int             : <\/font><font color=\"#A347BA\">%lu<\/font><font color=\"#C01C28\"> octet(s)<\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;<\/font>, <font color=\"#A2734C\">sizeof<\/font>(<font color=\"#26A269\">int<\/font>));\n        printf(<font color=\"#C01C28\">&quot;Taille de unsigned int    : <\/font><font color=\"#A347BA\">%lu<\/font><font color=\"#C01C28\"> octet(s)<\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;<\/font>, <font color=\"#A2734C\">sizeof<\/font>(<font color=\"#26A269\">unsigned<\/font> <font color=\"#26A269\">int<\/font>));\n\n        printf(<font color=\"#C01C28\">&quot;Taille de long            : <\/font><font color=\"#A347BA\">%lu<\/font><font color=\"#C01C28\"> octet(s)<\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;<\/font>, <font color=\"#A2734C\">sizeof<\/font>(<font color=\"#26A269\">long<\/font>));\n        printf(<font color=\"#C01C28\">&quot;Taille de unsigned long   : <\/font><font color=\"#A347BA\">%lu<\/font><font color=\"#C01C28\"> octet(s)<\/font><font color=\"#A347BA\">\\n<\/font><font color=\"#C01C28\">&quot;<\/font>, <font color=\"#A2734C\">sizeof<\/font>(<font color=\"#26A269\">unsigned<\/font> <font color=\"#26A269\">long<\/font>)); \n\n        <font color=\"#A2734C\">return<\/font> <font color=\"#C01C28\">EXIT_SUCCESS<\/font>;\n}\n<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@ordi:~\/Works\/TP0_C\/limits$ vi limits.c\netudiant@ordi:~\/Works\/TP0_C\/limits$ gcc limits.c -o limits -Wall -ansi -pedantic -g<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on teste le code <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">compiler avec les options -ansi , -Wall , pedantic , -g<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@ordi:~\/Works\/TP0_C\/limits$ .\/limits\nTaille de char            : 1 octet(s)\nTaille de signed char     : 1 octet(s)\nTaille de unsigned char   : 1 octet(s)\nTaille de short           : 2 octet(s)\nTaille de unsigned short  : 2 octet(s)\nTaille de int             : 4 octet(s)\nTaille de unsigned int    : 4 octet(s)\nTaille de long            : 8 octet(s)\nTaille de unsigned long   : 8 octet(s)\netudiant@ordi:~\/Works\/TP0_C\/limits$<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-2-donner-les-valeurs-max-et-min-de-tous-les-types-vu-dans-ce-code\">2-2 donner les valeurs max et min de tous les types vu dans ce code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">on rappel qu&rsquo;un octet c&rsquo;est 8 bits!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pour comprendre le codage <a href=\"https:\/\/workboot.fr\/ciela\/le-complement-a-2\/\">compl\u00e9ment \u00e0 2<\/a> .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">donner un calcul pour chaque type , unsigned (non sign\u00e9)..  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">on peut s&rsquo;aider du fichier <strong>\/usr\/include\/limits.h<\/strong>       (pour v\u00e9rifier)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-votre-travail-final-doit-ressembler-a\">3- Votre travail final doit ressembler \u00e0 :<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ne pas oublier de sauvegarder sur linux3!<\/p>\n\n\n\n<pre>etudiant@ordi:~\/Works$ tree TP0_C\/\n<font color=\"#12488B\"><b>TP0_C\/<\/b><\/font>\n\u251c\u2500\u2500 <font color=\"#12488B\"><b>bonjour<\/b><\/font>\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 <font color=\"#26A269\"><b>bonjour<\/b><\/font>\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 bonjour.c\n\u2514\u2500\u2500 <font color=\"#12488B\"><b>limits<\/b><\/font>\n    \u251c\u2500\u2500 <font color=\"#26A269\"><b>limits<\/b><\/font>\n    \u2514\u2500\u2500 limits.c\n\n2 directories, 4 files\netudiant@ordi:~\/Works$\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: R\u00e9pertoire du travail: ~\/Works\/TP0_C etudiant@ordi:~\/Works$ tree TP0_C\/ TP0_C\/ \u251c\u2500\u2500 bonjour \u2502\u00a0\u00a0 \u251c\u2500\u2500 bonjour \u2502\u00a0\u00a0 \u2514\u2500\u2500 bonjour.c \u2514\u2500\u2500 limits \u251c\u2500\u2500 limits \u2514\u2500\u2500 limits.c 2 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-1603","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TP0_C D\u00e9couverte du C ANSI par K&amp;R - workboot<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TP0_C D\u00e9couverte du C ANSI par K&amp;R - workboot\" \/>\n<meta property=\"og:description\" content=\"\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: R\u00e9pertoire du travail: ~\/Works\/TP0_C etudiant@ordi:~\/Works$ tree TP0_C\/ TP0_C\/ \u251c\u2500\u2500 bonjour \u2502\u00a0\u00a0 \u251c\u2500\u2500 bonjour \u2502\u00a0\u00a0 \u2514\u2500\u2500 bonjour.c \u2514\u2500\u2500 limits \u251c\u2500\u2500 limits \u2514\u2500\u2500 limits.c 2 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/\" \/>\n<meta property=\"og:site_name\" content=\"workboot\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-01T11:18:30+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/decouverte-du-c-ansi-par-kr\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/decouverte-du-c-ansi-par-kr\\\/\",\"name\":\"TP0_C D\u00e9couverte du C ANSI par K&amp;R - workboot\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\"},\"datePublished\":\"2025-06-26T10:36:29+00:00\",\"dateModified\":\"2025-12-01T11:18:30+00:00\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/workboot.fr\\\/ciela\\\/decouverte-du-c-ansi-par-kr\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"name\":\"workboot\",\"description\":\"Open Source, Open Minds \",\"publisher\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\",\"name\":\"workboot\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"contentUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"width\":1024,\"height\":950,\"caption\":\"workboot\"},\"image\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TP0_C D\u00e9couverte du C ANSI par K&amp;R - workboot","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/","og_locale":"fr_FR","og_type":"article","og_title":"TP0_C D\u00e9couverte du C ANSI par K&amp;R - workboot","og_description":"\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: R\u00e9pertoire du travail: ~\/Works\/TP0_C etudiant@ordi:~\/Works$ tree TP0_C\/ TP0_C\/ \u251c\u2500\u2500 bonjour \u2502\u00a0\u00a0 \u251c\u2500\u2500 bonjour \u2502\u00a0\u00a0 \u2514\u2500\u2500 bonjour.c \u2514\u2500\u2500 limits \u251c\u2500\u2500 limits \u2514\u2500\u2500 limits.c 2 [&hellip;]","og_url":"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/","og_site_name":"workboot","article_modified_time":"2025-12-01T11:18:30+00:00","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/","url":"https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/","name":"TP0_C D\u00e9couverte du C ANSI par K&amp;R - workboot","isPartOf":{"@id":"https:\/\/workboot.fr\/ciela\/#website"},"datePublished":"2025-06-26T10:36:29+00:00","dateModified":"2025-12-01T11:18:30+00:00","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/workboot.fr\/ciela\/decouverte-du-c-ansi-par-kr\/"]}]},{"@type":"WebSite","@id":"https:\/\/workboot.fr\/ciela\/#website","url":"https:\/\/workboot.fr\/ciela\/","name":"workboot","description":"Open Source, Open Minds ","publisher":{"@id":"https:\/\/workboot.fr\/ciela\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/workboot.fr\/ciela\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/workboot.fr\/ciela\/#organization","name":"workboot","url":"https:\/\/workboot.fr\/ciela\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/","url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","contentUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","width":1024,"height":950,"caption":"workboot"},"image":{"@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/"}}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"\ud83d\udd52 : 3 h maximum Pr\u00e9requis: But: R\u00e9pertoire du travail: ~\/Works\/TP0_C etudiant@ordi:~\/Works$ tree TP0_C\/ TP0_C\/ \u251c\u2500\u2500 bonjour \u2502\u00a0\u00a0 \u251c\u2500\u2500 bonjour \u2502\u00a0\u00a0 \u2514\u2500\u2500 bonjour.c \u2514\u2500\u2500 limits \u251c\u2500\u2500 limits \u2514\u2500\u2500 limits.c 2 [&hellip;]","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/1603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=1603"}],"version-history":[{"count":51,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/1603\/revisions"}],"predecessor-version":[{"id":5531,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/1603\/revisions\/5531"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=1603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}