Datentypen

In einem User-Language-Programm können Variablen unterschiedlicher Typen definiert werden, die die verschiedenen Arten von Informationen in den EAGLE-Datenstrukturen darstellen. Die vier grundlegenden Datentypen lauten:

Neben diesen grundlegenden Datentypen gibt es auch Objekttypen auf oberer Ebene, die die in den EAGLE-Datendateien gespeicherten Datenstrukturen darstellen.

Der spezielle Datentyp void wird nur als Rückgabetyp einer Funktion verwendet und weist darauf hin, dass diese Funktion keinen Wert zurückgibt.

Datentyp Referenzen Größe
char Der Datentyp char wird zum Speichern einzelner Zeichen verwendet, z. B. der Buchstaben des Alphabets oder kleiner Zahlen ohne Vorzeichen. Eine Variable des Typs char hat eine Größe von 8 Bit (1 Byte) und kann jeden Wert im Bereich 0..255 speichern.
int Der Datentyp int wird zum Speichern von ganzzahligen Werten mit Vorzeichen verwendet, z. B. der Koordinaten eines Objekts. Eine Variable des Typs int hat eine Größe von 32 Bit (4 Byte) und kann jeden Wert im Bereich von -2147483648 bis 2147483647 speichern.
Reell Der Datentyp real wird zum Speichern von Gleitkommawerten mit Vorzeichen verwendet, z. B. des Rasterabstands. Eine Variable des Typs real hat eine Größe von 64 Bit (8 Byte) und kann jeden Wert im Bereich von ±2.2e-308 bis ±1.7e+308 mit einer Genauigkeit von 15 Stellen speichern.
Zeichenfolge Der Datentyp string wird zum Speichern von Textinformationen verwendet, z. B. des Namens eines Bauteils oder Netzes. Eine Variable des Typs string ist in ihrer Größe nicht beschränkt (vorausgesetzt, es ist genügend Speicher verfügbar).

Zugriff auf Zeichenfolgenindizes

Variablen des Typs string werden ohne explizite Größe definiert. Die Größe wird bei Bedarf während der Programmausführung automatisch angepasst.

Die Elemente einer string-Variablen sind vom Typ int und können mithilfe von [index] einzeln aufgerufen werden. Das erste Zeichen einer Zeichenfolge hat den Index 0:

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

Es wird das Zeichen 'y' gedruckt. Beachten Sie, dass s[2] das dritte Zeichen von s zurückgibt. Eine verlustfreie Konvertierung in char ist für Standard-ASCII-Zeichenfolgen möglich:

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

Implementierungsdetails

Der Datentyp string wird wie native nullterminierte C-Typ-Zeichenfolgen implementiert. Sehen wir uns die folgende Variablendefinition an:

string s = "abcde";

s[4] ist das Zeichen 'e', und s[5] das Zeichen '\0' bzw. der ganzzahlige Wert 0x00. Diese Tatsache kann verwendet werden, um das Ende einer Zeichenfolge ohne die strlen()-Funktion zu ermitteln. Beispiel:

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

Es ist auch vollkommen in Ordnung, einen Teil einer Zeichenfolge abzuschneiden, indem ein Nullzeichen angegeben wird:

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

Dies führt dazu, dass s den Wert abc aufweist. Beachten Sie, dass alle Einträge nach dem Nullzeichen entfernt werden. Diese werden auch dann nicht wieder angezeigt, wenn Sie das ursprüngliche Zeichen wiederherstellen. Das Gleiche gilt für alle anderen Operationen, bei denen ein Zeichen auf 0 gesetzt wird, zum Beispiel --s[3].

Typkonvertierungen

Der Ergebnistyp eines arithmetischen Ausdrucks, wie z. B. a + b, wobei a und b unterschiedliche arithmetische Typen sind, entspricht dem größeren der beiden Operandentypen. Arithmetische Typen sind char, int und real (in dieser Reihenfolge). Wenn also z. B. a vom Typ int und b vom Typ real ist, wäre das Ergebnis des Ausdrucks a + b real.

Typumwandlung

Der Ergebnistyp eines arithmetischen Ausdrucks kann explizit in einen anderen arithmetischen Typ konvertiert werden, indem Sie eine Typumwandlung darauf anwenden. Die allgemeine Syntax einer Typumwandlung lautet type(expression), wobei der Typ char, int oder real lautet und der Ausdruck ein beliebiger arithmetischer Ausdruck ist.

Bei der Typumwandlung eines reellen Ausdrucks in int wird der Bruchteil des Werts abgeschnitten.