Programmare in C - Errata corrige
by Tullio Facchinetti
Capitolo 4
Sezione 4.1, pagina 52
L’esempio
b = atoi("dieci"); /* b <- 10 */
è errato, in quanto il valore convertito e assegnato a b
è pari a 0
.
Capitolo 5
Tabella 5.3
La dimensione della mantissa del tipo double viene riportata pari a 43 bit, quando invece è di 53 bit.
Sezione 5.13.2
La seconda istruzione del codice di esempio seguente:
int n1, n2;
double a = 1.6, b = 1.6;
n1 = a;
n2 = b;
deve essere
double a = 1.6, b = -1.6;
Nel testo che descrive l’esempio, infatti, si dice che il valore assegnato a b
è -1
, che è una affermazione corretta tenuto conto della correzione suggerita.
Grazie a Davide Camino (UNITO) per la segnalazione.
Capitolo 6
Esempio 20: programma chist.c
- sezione 6.8
Nella funzione chist
le istruzioni
if ((testo[i] >= 'A' && testo[i] <= 'Z') ||
(testo[i] >= 'a' && testo[i] <= 'z')) {
e
if (isalpha(testo[i]))
sono alternative, e non devono essere presenti contemporaneamente nel codice.
La versione che usa la funzione isalpha
è comunque da preferire. Nel caso si consideri la if
con test esplicito sul valore dei caratteri, si faccia attenzione che è presente una parentesi graffa aperta di troppo.
Capitolo 7
Sezione 7.2, pagina 133
I commenti nella struttura struct data
presente a fine pagina sono scambiati: g
è il giorno, mentre a
è l’anno.
Capitolo 8
Sezione avanzata n. 12, pagina 158
Il file generato dalla redirezione del comando ls
è contenuto.dat
, mentre nel testo ci si riferisce a dir.dat
.
Capitolo 9
Esempio 43: programma pgm_fgets_realloc.c
- pagina 207
Prima del while
di riga 8 è necessario assegnare *ret = 0;
, ovvero impostare la lunghezza della stringa puntata da ret
pari a 0, per evitare problemi nel codice successivo.
Capitolo 11
NOTA appena prima della sezione 11.6.4
Il risultato di “2 elevato alla 2 elevato alla 2” (2^2^2, in “notazione informatica”) non è 8, ma 16.