Successivo: Numeri non-decimali, Su: Costanti [Contenuti][Indice]
Una costante numerica è un numero. Questo numero può essere un numero intero, una frazione decimale o un numero in notazione scientifica (esponenziale).30 Ecco alcuni esempi di costanti numeriche che hanno tutte lo stesso valore:
105 1.05e+2 1050e-1
Una costante stringa è formata da una sequenza di caratteri racchiusi tra doppi apici. Per esempio:
"pappagallo"
rappresenta la stringa il cui contenuto è la parola ‘pappagallo’.
Le stringhe in
gawk
possono essere di qualsiasi lunghezza, e possono contenere
tutti i possibili caratteri ASCII a otto bit, compreso il carattere ASCII
NUL (carattere con codice zero).
Altre implementazioni di awk
possono avere difficoltà con alcuni
particolari codici di carattere.
Alcuni linguaggi di programmazione consentono la continuazione di stringhe lunghe su più righe, qualora una riga termini con una barra inversa. Per esempio in C:
#include <stdio.h> int main() { printf("ciao, \ mondo\n"); return 0; }
In questo caso, il compilatore C rimuove sia la barra inversa che il carattere di avanzamento riga (newline), producendo una stringa che equivale ad aver immesso ‘"ciao, mondo\n"’. Ciò torna utile quando una stringa deve contenere una grande quantità di testo.
Lo standard POSIX afferma esplicitamente che
il carattere di avanzamento riga
non è consentito all’interno di costanti di tipo stringa.
E in effetti, tutte le implementazioni di awk
emettono un
messaggio di errore se si tenta di utilizzarlo. Per esempio:
$ gawk 'BEGIN { print "ciao, > mondo" }' -| gawk: riga com.:1: BEGIN { print "ciao, -| gawk: riga com.:1: ^ stringa non terminata -| gawk: riga com.:1: BEGIN { print "ciao, -| gawk: riga com.:1: ^ syntax error
Sebbene POSIX non definisca cosa succede usando un carattere
protetto di avanzamento riga, come nell’esempio in linguaggio C
visto sopra, tutte le versioni di awk
consentono di
farlo. Sfortunatamente, quello che una particolare versione di
awk
fa con una tale stringa non è uniforme.
(a.b.) gawk
, mawk
, e
OpenSolaris POSIX awk
(vedi la sezione Altre implementazioni di awk
liberamente disponibili)
tolgono sia la barra inversa che il carattere di
avanzamento riga, come avviene nel linguaggio C:
$ gawk 'BEGIN { print "ciao, \ > mondo" }' -| ciao, mondo
In modalità POSIX (vedi la sezione Opzioni sulla riga di comando), gawk
non consente
caratteri protetti di avanzamento riga. Altrimenti, il
comportamento è quello descritto sopra.
BKW awk
e BusyBox awk
tolgono la barra inversa, ma lasciano indisturbato il carattere
di avanzamento riga, che fa quindi parte della stringa:
$ nawk 'BEGIN { print "ciao, \ > mondo" }' -| ciao, -| mondo
La rappresentazione interna di tutti i numeri,
compresi gli interi, usa numeri in virgola mobile a doppia precisione.
Sui sistemi più moderni, questi sono nel formato standard IEEE 754.
Vedi la sezione Calcolo con precisione arbitraria con gawk
, per maggiori informazioni.
Successivo: Numeri non-decimali, Su: Costanti [Contenuti][Indice]