### 6.5.16 Pour transformer une chaîne en un nombre ou en une commande : `expr`

Voici , selon la chaîne, les transformations que fait `expr` :

- `expr` permet de transformer une chaîne de chiffres ou lettres en un nombre entier ayant comme écriture en base 8,ou 10 ou 16 cette chaîne de chiffres. Il faut bien sûr que l’écriture soit valide et représente un nombre entier dans la base donnée : toutefois `expr("019")` renvoie le nombre décimale `19.0` (voir aussi 9.5.5).
  Attention
  Si la chaîne commence par `0x`, `expr` transforme cette chaîne en le nombre entier écrit en base 16, sinon,
  si la chaîne commence par 0, `expr` transforme cette chaîne en le nombre entier écrit en base 8 et sinon
  `expr` transforme cette chaîne en le nombre entier écrit en base 10.
  On tape :
  `expr("123")`
  On obtient :
  `123`
  On tape :
  `expr("0123")`
  On obtient :
  `83`
  En effet : 1*82+2*8+3=83 On tape :
  `expr("0x12f")`
  On obtient :
  `303`
  En effet 1*162+2*16+15=303
  Remarque On tape :
  `expr(char([48,50,56,56]))`
  On obtient un nombre flottant :
  `288.0`
  En effet `char([48,50,56,56])` renvoie `"0288"`.
  Or un nombre entier commençant par 0 est un nombre écrit en octal, du coup il ne doit pas contenir de chiffre supérieur ou égal à 8. Ici le nombre a des chiffres égaux à 8, il est donc réinterprété (après détection d’erreur de saisie en octal) comme un nombre flottant.
  On tape :
  `expr(char([48,50,55,55]))`
  On obtient un nombre exact car l’écriture `"0277"` est valide :
  `191`
  En effet `char([48,50,55,55])` renvoie `"0277"` et `0277` est l’écriture en base 8 de `191` (7+8*7+64*2=191).
  On tape :
  `expr(char([48,48,50,51]))`
  On obtient un nombre exact car l’écriture `"0023"` est valide :
  `19`
  En effet `char([48,50,55,55])` renvoie `"0023"` et `0023` est l’écriture en base 8 de `19` (3+2*8=19).
- `expr` permet aussi de transformer une chaîne de chiffres représentant un nombre décimal en ce nombre.
  On tape :
  `expr("123.4567")`
  On obtient :
  `123.4567`
  On tape :
  `expr("123e-5")`
  On obtient :
  `0.00123`
- `expr` permet aussi de transformer une chaîne de caractères pouvant être interprétée comme une commande.
  On tape :
  `expr("a:=1")`
  On obtient :
  `1 et, la variable a contient 1`