From 169d75c7d492da9f80b8b387e79bfe035f8296c4 Mon Sep 17 00:00:00 2001 From: Orestis Malaspinas <orestis.malaspinas@hesge.ch> Date: Tue, 19 Jun 2018 21:54:45 +0200 Subject: [PATCH] added overflow --- intro.md | 8 ++++---- types.md | 32 +++++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/intro.md b/intro.md index c235d5e..b24878b 100644 --- a/intro.md +++ b/intro.md @@ -4,16 +4,16 @@ subtitle: Introduction générale author: Orestis Malaspinas <!-- date: 25 avril 2018 --> sansfont: Sans Serif -header-includes: +<!-- header-includes: <link rel="stylesheet" href="reveal.js/lib/css/zenburn.css" > <link rel="stylesheet" href="reveal.js/css/theme/simple.css" id="theme"> <link rel="stylesheet" href="css/console.css" id="theme"> - <script src="jquery/dist/jquery.min.js"></script> -include-after: + <script src="jquery/dist/jquery.min.js"></script> --> +<!-- include-after: <script src="js/playRust.js"></script> <script src="js/remote-code.js"></script> <script src="js/remote-diagrams.js"></script> - <script src="js/em-artiste.js"></script> + <script src="js/em-artiste.js"></script> --> pdfMaxPagesPerSlide: 1 <!-- slide-numbers: true --> diff --git a/types.md b/types.md index ef29057..e46b33e 100644 --- a/types.md +++ b/types.md @@ -46,7 +46,7 @@ sansfont: Sans Serif - Les charactères. -## Les entiers (1/2) +## Les entiers (1/3) - Il existe 4 tailles d'entiers (8, 16, 32, et 64 bits) qui viennent en signé ou non-signé. - Également en taille dépendant de l'architecture @@ -67,7 +67,7 @@ sansfont: Sans Serif | 32 ou 64 bits | `isize`{.rust}| `usize`{.rust} | +---------------+---------------+--------------------+ -## Les entiers (2/2) +## Les entiers (2/3) - Par défaut un entier est de type `i32`{.rust}. - Les types `isize`{.rust} et `usize`{.rust} sont typiquement pour indéxer des collections. @@ -79,19 +79,33 @@ sansfont: Sans Serif - On ne peut **pas** convertir implicitement d'un type à un autre. <pre><code data-trim="hljs rust" class="lang-rust"> - fn main() { - let x:i64 = 5i32; // entier 32 bits dans une variable 64 bits - } +fn main() { + let x:i64 = 5i32; // entier 32 bits dans une variable 64 bits +} </code></pre> - On peut convertir entre les entiers à l'aide de `as`{.rust}. <pre><code data-trim="hljs rust" class="lang-rust"> - fn main() { - let x:i64 = 5i32 as i64; // entier 32 bits dans une variable 64 bits +fn main() { + let x:i64 = 5i32 as i64; // entier 32 bits dans une variable 64 bits - println!("Conversion de 32 en 64 bits pour x={}.", x); // affichage - } + println!("Conversion de 32 en 64 bits pour x={}.", x); // affichage +} + </code></pre> + +## Les entiers (3/3) + +- En mode *debug*, un dépassement d'entier produira une erreur à l'exécution. +- **Attention**: En mode *release*, cela ne sera pas le cas. + + <pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let x = 12341324; + let y = 12341234; + + println!("L'entier x vaut {}.", (x*y) as i32); // affichage +} </code></pre> ## Les nombres à virgule flottante -- GitLab