Types de données

Un programme de langage utilisateur peut définir des variables de différents types, représentant les différents types d’informations disponibles dans les structures de données EAGLE. Les quatre types de données de base sont les suivants :

Outre ces types de données de base, il existe également des types d’objets de niveau supérieur, qui représentent les structures de données stockées dans les fichiers de données EAGLE.

Le type de données spécial void est utilisé uniquement comme type de retour d’une fonction. Il indique que la fonction ne renvoie aucune valeur.

Type de données Utilisation Taille
char (caractère) Le type de données char est utilisé pour stocker des caractères individuels, tels que les lettres de l’alphabet ou des petits nombres non signés. Une variable de type char a une taille de 8 bits (un octet) et peut stocker n’importe quelle valeur comprise entre 0 et 255.
int (entier) Le type de données int (entier) sert à stocker les nombres entiers signés (les coordonnées d’un objet, par exemple). Une variable de ce type a une taille de 32 bits (quatre octets) et peut stocker toute valeur comprise entre -2147483648 et 2147483647.
réel Le type de données real (réel) sert à stocker les nombres à virgule flottante signés (la distance de la grille, par exemple). Une variable de ce type a une taille de 64 bits (huit octets) et peut stocker toute valeur comprise entre ±2.2e-308 et ±1.7e+308, avec une précision de 15 chiffres.
chaîne Le type de données string (chaîne) sert à stocker des informations textuelles (le nom d’un composant ou d’un net, par exemple). La taille d’une variable de ce type n’est pas limitée (dans la mesure où la mémoire disponible est suffisante).

Accès aux index de string

Les variables de type string sont définies sans taille explicite. Leur taille augmente automatiquement au besoin pendant l’exécution du programme.

Les éléments d’une variable de type string sont de type int et sont accessibles individuellement à l’aide de l’[index]. Le premier caractère d’une chaîne possède l’index 0 :

string s = "Layout";
printf("Third char is: %c\n", s[2]);

Cela imprime le caractère « y ». Notez que s[2] renvoie le troisième caractère de s. Une conversion sans perte vers le type char est possible pour les chaînes ASCII standard :

string s = "Layout";
char c = s[2];

Détails de l’implémentation

Les données de ce type sont implémentées sous forme de chaînes terminées par un zéro de type C. Par exemple, dans la définition de variable suivante :

string s = "abcde";

s[4] est le caractère « e » et s[5] est le caractère « \0 », ou la valeur entière 0x00. Vous pouvez utiliser cette structure pour déterminer la fin d’une chaîne sans utiliser la fonction strlen(), comme dans l’exemple suivant :

for (int i = 0; s[i]; ++i) {
    // do something with s[i]
    }

En outre, il est possible de « couper » une partie d’une chaîne en y insérant un caractère zéro :

string s = "abcde";
s[3] = 0;

La chaîne s aura alors la valeur « abc ». Notez que tous les caractères qui suivent le caractère zéro sont définitivement supprimés. Il est impossible de les récupérer en restaurant la chaîne d’origine. Il en est de même pour toute autre opération qui définit un caractère sur 0 (s[3], par exemple).

Conversions de type

Le type du résultat d’une expression arithmétique, telle que a + b, où a et b sont de types arithmétiques différents, sera « le plus grand » des deux types d’opérande. Les types arithmétiques sont char, int et real (dans cet ordre). Par exemple, si a est de type int et b est de type real, le résultat de l’expression a + b sera de type real.

Conversion de type

Vous pouvez convertir explicitement le type du résultat d’une expression arithmétique en un autre type arithmétique en lui appliquant une conversion de type. La syntaxe générale d’une conversion de type est type(expression)où type est char, int or real, et expression est une expression arithmétique.

Lorsque vous convertissez une expression de type real vers le type int, la partie décimale de la valeur est tronquée.