Un programma ULP può definire variabili di diverso tipo, che rappresentano i diversi generi di informazioni disponibili nelle strutture di dati EAGLE. I quattro tipi di dati di base sono
Oltre a questi tipi di dati di base, sono disponibili anche tipi di oggetti di alto livello, che rappresentano le strutture di dati memorizzate nei file di dati EAGLE.
Il tipo di dati speciale void viene utilizzato solo come un tipo restituito di una funzione, per indicare che questa funzione non restituisce alcun valore.
| Tipo di dati | Uso | Dimensioni |
|---|---|---|
| carattere | Il tipo di dati carattere viene utilizzato per memorizzare singoli caratteri, ad esempio le lettere dell'alfabeto o piccoli numeri senza segno. | Una variabile di tipo char ha una dimensione di 8 bit (un byte) e può memorizzare qualsiasi valore nell'intervallo 0..255. |
| intero | Il tipo di dati intero viene utilizzato per memorizzare valori integrali firmati, come le coordinate di un oggetto. | Una variabile di tipo int ha una dimensione di 32 bit (quattro byte) e può memorizzare qualsiasi valore compreso nell'intervallo da -2147483648 a 2147483647. |
| reale | Il tipo di dati reale viene utilizzato per memorizzare i valori a virgola mobile con segno, come la distanza della griglia. | Una variabile di tipo reale ha una dimensione di 64 bit (8 byte) e può memorizzare qualsiasi valore compreso nell'intervallo da ± 2,2 e-308 a ± 1,7 e+308 con una precisione di 15 cifre. |
| stringa | Il tipo di dati stringa consente di memorizzare informazioni testuali, come il nome di una parte o di una rete. | Le dimensioni di una variabile di tipo stringa non sono limitate (a condizione che la memoria disponibile sia sufficiente). |
Le variabili di tipo stringa vengono definite senza una dimensione esplicita. Le dimensioni aumentano automaticamente secondo le esigenze durante l'esecuzione del programma.
Gli elementi di una variabile stringa sono di tipo intero ed è possibile accedervi singolarmente utilizzando il parametro [index]. L'indice del primo carattere di una stringa è 0:
string s = "Layout";
printf("Third char is: %c\n", s[2]);In questo modo viene stampato il carattere "y". Si noti che s[2] restituisce il terzo carattere di s. È possibile eseguire la conversione nel tipo carattere senza perdita di informazioni per stringhe ASCII standard:
string s = "Layout";
char c = s[2];Il tipo di dati stringa è di fatto implementato come stringhe terminate con zero di tipo C native. Se si osserva la seguente definizione di variabile
string s = "abcde";
s[4] è il carattere 'e' e s[5] è il carattere '\0' o il valore intero 0x00. Ciò può essere utilizzato per determinare la fine di una stringa senza utilizzare la funzione strlen(), come in
for (int i = 0; s[i]; ++i) {
// do something with s[i]
}È inoltre corretto "tagliare" parte di una stringa eseguendo il "punching" di un carattere zero in essa:
string s = "abcde";
s[3] = 0;In questo modo, il valore di s sarà "abc". Notare che tutti gli elementi successivi al carattere zero verranno di fatto rimossi e non sarà possibile reinserirli ripristinando il carattere originale. Lo stesso vale per qualsiasi altra operazione che imposta un carattere su 0, ad esempio --s[3].
Il tipo di risultato di un'espressione aritmetica, ad esempio a + b, in cui a e b sono tipi aritmetici differenti, è uguale al "più grande" dei due tipi di operando. I tipi aritmetici sono carattere, intero e reale (in questo ordine). Pertanto, se, ad esempio, a è di tipo intero e b è di tipo reale, il risultato dell'espressione a + b sarà reale.
Il tipo di risultato di un'espressione aritmetica può essere convertito in modo esplicito in un tipo aritmetico diverso applicando ad esso un typecast. La sintassi generale di un typecast è type(expression) in cui type è un tipo carattere, intero o reale e l'espressione è qualsiasi espressione aritmetica.
Quando si esegue il typecast di un'espressione reale ad intera, la parte frazionaria del valore viene troncata.